Почему эта функция не работает? - PullRequest
0 голосов
/ 24 октября 2011

Я создал функцию для своего блога.

Модель -

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. Почему я получаю эту ошибку?

Ответы [ 2 ]

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

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

1 голос
/ 24 октября 2011

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

...