2013-11-22 35 views
0

我很努力的让我的头很多,因为太多的时间,我需要一些帮助:) 我有一个网站建立在Kohana,并希望动态地改变当用户点击一个按钮或另一个按钮时某些文本的内容。不知道我是否以正确的方式做,但这是我迄今为止所做的(由于我是这个框架的新手)。Kohana:试图动态地改变内容(不是整个页面)

控制器:

类Controller_Homepage扩展Controller_General {

public $template = "template/widepage"; 

    public $textbuyer = array (
     'text1' => "homepage.buyer.bigtext1", //transfering language variable. 
     'text2' => "homepage.buyer.bigtext2", 
     //with more ... 
     ); 

    public $textseller = array (
     'text1' => "homepage.seller.bigtext1", 
     'text2' => "homepage.seller.bigtext2", 
     'text3' => "homepage.seller.bigtext3", 
     //with more ... 
     ); 
    public $thetext = array ("textbuyer"); //the defaul array is textbuyer 

公共职能action_index(){

 $this->content = View::factory("homepage") 
      ->bind('pagetext', $thetext); 


     if ($this->request->method() === Request::POST) { 
      $post= $this->request->post(); 
      if (isset($post['buyer'])){ 
       $thetext = $textbuyer;//gives rrorException [ Notice ]: Undefined variable: textbuyer 
      // arr::overwrite($thetext, $textbuyer); 
      }else if(isset($post['seller'])){ 
       $thetext = $textseller; 
       } 
     } 

} 

我的观点的部分设置为显示我如何使用变量视图:

 <div class="container_content"> 
      <div> 
       <p id='sline'><?php echo $pagetext['text1']; ?></p> 
      </div> 
      <div> 

无法获取我的数组的内容到视图中,当我单击两个按钮中的一个时,此代码给我以下错误:ErrorException [Notice]:Undefined variable:textbuyer。我做错了什么?为什么我得到我提到的错误? 谢谢!

回答

1

当你像这样定义

public $textbuyer = ... 
public $textseller = ... 
public $thetext = ... 

他们是你的类的属性变量。而且,由于他们是,你需要通过

$this->textbuyer 
$this->textseller 
$this->thetext 

只要您拨打同一个类中的方法与$this->methodName()而不是methodName()给他们打电话。

class Foo { 
    public $bar = "hello "; 
    public function foo() { 
     $bar = "world"; 
     print $this->bar.$bar; // hello world 
    } 
} 

这会工作得很好,你会得到错误,因为你永远无法定义$textbuyer(因为你要调用$this->textbuyer)。

+0

谢谢kingkero,会试试这个,让你知道结果。当它是一个私有变量而不是公共变量时,这会改变吗?我的意思是我必须以同样的方式给他们打电话吗?谢谢! – user3019997

+0

不,这不会改变 – kero