#php #kohana #kohana-routing
#php #кохана #kohana-маршрутизация
Вопрос:
Я создал функцию для своего блога.
Модель —
public function get_article($nosaukums) {
$query = DB::query(Database::SELECT, 'SELECT * FROM ieraksti WHERE virsraksts = :nosaukums')
->parameters(array(':nosaukums' => $nosaukums))->execute();
return $query;
}
Контроллер —
public function action_article()
{
Route::set('article', 'article/(name)', array('name' => '. '))
->defaults(array(
'controller' => 'index',
'action' => 'article',
));
$this->template->content = View::factory('index/article')
->set('query', Model::factory('index')->get_article($nosaukums));
}
и посмотреть —
<?php
foreach($nosaukums as $article)
{
echo '<h3>'.$article['virsraksts'].'</h3>';
}
?>
Я хочу URL-адрес — domain.com/article/name_of_article , но domain.com/article не работает — ошибка HTTP_Exception_404 [ 404 ]: The requested URL article was not found on this server.
, почему я получаю эту ошибку?
Комментарии:
1. вероятно, вам следует сказать метод вместо функции…
Ответ №1:
- Настройка маршрута в действии контроллеров — плохая идея — переместите его в bootstrap.php
-
Измените маршрут на:
Route::set('article', 'article(/<name>)', array('name' => '. ')) ->defaults(array( 'controller' => 'index', 'action' => 'article', ));
-
В вашем контроллере вы должны получить название статьи, используя
$this->request->param('name')
(вероятно, это то, что вы должны присвоить своей$nosaukums
переменной, потому что она не определена в вашем коде)
Ответ №2:
Ошибка 404 означает, что она не существует. Это больше похоже на проблему mod_rewrite, чем на проблему с кодом (по крайней мере, с учетом текущих деталей). Проверьте журналы вашего веб-сервера, чтобы узнать, какую страницу сервер на самом деле пытается загрузить.