Запрос :: $ контроллер в Кохане - PullRequest
3 голосов
/ 03 февраля 2011

Почему я не могу запросить имя используемого контроллера из View?

Например, someview.php содержит:

<?php echo Request::$controller; ?>

Кохана показывает ошибку: «ErrorException [Fatal Error]: доступ к необъявленному статическому свойству: Request :: $ controller ”

Почему?Что не так?

Мне нужно для этого:

<?php if (Request::$controller != 'index') { ?> <a href="/">Example.com</a> <?php } else { ?> Example.com <?php } ?>

Ответы [ 5 ]

4 голосов
/ 03 февраля 2011

Сделайте это вместо этого на контроллере:

View::bind_global('controller', $this->request->param('controller'));

Тогда вы можете получить доступ к $controller в любом представлении.

3 голосов
/ 03 февраля 2011

Запрос должен быть доступен статическими методами, нет необходимости определять дополнительные статические свойства || глобальное представление vars, чтобы получить его.

Request::instance() вернет основной экземпляр запроса («материнский экземпляр»). Request::current() вернет экземпляр текущего активного запроса, то же самое можно получить с помощью $this->request в Controller.

<? if (Request::current()->controller !== 'index') : ?> 

    <a href="<?= URL::site() ?>">Example.com</a> 

<? else : ?> 

    Example.com 

<?  endif; ?>
1 голос
/ 03 февраля 2011

Я бы поступил так, как предложил Йода, однако, вероятно, я бы также включил эту логику в контроллер.

Я полагаю, вы хотите получить ссылку на дом?

$link = (Request::$controller != 'index') ? '<a href="/">Example.com</a>' : 'Home';
$this->template->set_global('homeLink', $link);

Дон 'не забывайте также, что вы можете создавать ссылки из своих маршрутов, используя Route::get() или одного из его друзей.

0 голосов
/ 27 ноября 2012

Kohana 3.2: вставьте в контроллер (я считаю, что это действительно глупо, что вы не можете использовать bind_global)

View::set_global('controller', $this->request->current()->controller());

Тогда в представлении вы можете использовать:

echo ( $controller );
0 голосов
/ 08 апреля 2011

В Kohana 3.1

<? if (Request::current()->controller !== 'index') : ?>

выдается «ErrorException [Notice]: неопределенное свойство: Request :: $ controller».тогда я просто использую Request :: current () -> controller () ввиду приемлемости / лучших практик / оптимальной производительности?

<? if (Request::current()->controller() !== 'index') : ?> 

    <a href="<?= URL::site() ?>">Example.com</a> 

<? else : ?> 

    Example.com 

<?  endif; ?>
...