为什么这个功能不起作用?

时间:2011-10-24 15:56:10

标签: php kohana kohana-routing

我为我的博客创建了函数。

模型 -

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 个答案:

答案 0 :(得分:1)

错误404表示它不存在。这似乎更像是mod_rewrite问题而不是代码问题(至少,给出了当前的详细信息)。检查Web服务器日志以查看服务器实际尝试加载的页面。

答案 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变量的内容,因为它在您的代码中未定义)

    < / LI>