Kohana:尝试动态更改内容(而不是整个页面)

时间:2013-11-22 02:16:42

标签: variables dynamic kohana bind

由于时间太长而我需要一些帮助,我正在努力解决这个问题。:) 我有一个基于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

public function 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]:未定义变量:textbuyer。我做错了什么?为什么我收到我提到的错误? 谢谢!

1 个答案:

答案 0 :(得分: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)。