Почему эта функция не работает?

#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:

  1. Настройка маршрута в действии контроллеров — плохая идея — переместите его в bootstrap.php
  2. Измените маршрут на:

     Route::set('article', 'article(/<name>)', array('name' => '. '))
        ->defaults(array(
            'controller' => 'index',
            'action' => 'article',
    ));
      
  3. В вашем контроллере вы должны получить название статьи, используя $this->request->param('name') (вероятно, это то, что вы должны присвоить своей $nosaukums переменной, потому что она не определена в вашем коде)

Ответ №2:

Ошибка 404 означает, что она не существует. Это больше похоже на проблему mod_rewrite, чем на проблему с кодом (по крайней мере, с учетом текущих деталей). Проверьте журналы вашего веб-сервера, чтобы узнать, какую страницу сервер на самом деле пытается загрузить.