2011-10-24 53 views
0

我爲我的博客創建了函數。爲什麼這個功能不起作用?

型號 -

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>'; 
} 
?> 

我想網址 - domain.com/article/name_of_article,但domain.com/文章不起作用 - 錯誤HTTP_Exception_404 [ 404 ]: The requested URL article was not found on this server.爲什麼我得到這個錯誤?

+0

你可能應該說方法而不是功能... –

回答

1
  1. 設置在控制器的行動路線是一個壞主意 - 它的路線移動到的bootstrap.php
  2. 更改爲:

    Route::set('article', 'article(/<name>)', array('name' => '.+')) 
        ->defaults(array(
         'controller' => 'index', 
         'action' => 'article', 
    )); 
    
  3. 在你的控制器,你應該得到的文章名稱使用$this->request->param('name')(這可能是你應該分配給你的變量的$nosaukums變量,因爲它在你的代碼中沒有定義)

+0

非常感謝,matino! :) – reGative

1

錯誤404意味着它不存在。這看起來更像是一個mod_rewrite問題,而不是代碼問題(至少在給出當前細節的情況下)。檢查您的Web服務器日誌以查看服務器實際嘗試加載的頁面。