Передача переменных из контроллера в представления

Я использую Kohana 3.3 вместе с Kostache. Хорошо, как передать переменную из контроллера в представления классов и использовать ее в файле усов?..

Вот мой код

контроллер:

public function action_update()
{
    $layout = Kostache_Layout::factory();

    $content = new View_Pages_Album_Update();

    $album = ORM::factory('Album_Information', $this->request->post('id'));

    $content->albumName = $album->Album_Name;

    $content->albumArtist = $album->Artist;

    $this->response->body($layout->render($content));
}

Просмотры

class View_Pages_Album_Update {

    public $title = 'Update Music';

    public function album_edit()
    {
        return array(
                    array('albumName' => $this->albumName),
                    array('albumArtist' => $this->albumArtist),
        );
    }
}

шаблон

<label>Album Name:</label>

<input type="text" name="inputAlbumName" value="{{albumName}}" /><br />

<label>Artist:</label>
<input type="text" name="inputArtist" value="{{albumArtist}}" /><br />

Когда я запускаю свой код, в файл шаблона ничего не передается. Так как же передать его из шаблона controller => views =>?

1 ответ

Решение

Вы устанавливаете значения для объекта Kostache_Layout. Я считаю, что вы должны установить их на View_Pages_Album_Update вместо этого:

контроллер:

public function action_update()
{
    $layout = Kostache_Layout::factory();
    $content = new View_Pages_Album_Update();

    $album = ORM::factory('Album_Information', $this->request->param('id'));

    $content->albumName = $album->Album_Name;
    $content->albumArtist = $album->Artist;

    $this->response->body($layout->render($content));
}

Я не думаю, что вам нужен метод album_edit() для шаблона, который вы показали, но если вы думаете, что это так, то используйте это.

Посмотреть:

class View_Pages_Album_Update {

public $title = 'Update Music';

public function album_edit()
{
    return array(
                array('albumName' => $this->albumName), // missing $this
                array('albumArtist' => $this->albumArtist), // missing $this
    );
}

}

Другие вопросы по тегам