2011-10-24 8 views
0

J'ai créé une fonction pour mon blog.Pourquoi cette fonction ne fonctionne pas?

Modèle -

public function get_article($nosaukums) { 
    $query = DB::query(Database::SELECT, 'SELECT * FROM ieraksti WHERE virsraksts = :nosaukums') 
      ->parameters(array(':nosaukums' => $nosaukums))->execute(); 
    return $query; 
} 

Controller -

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)); 
} 

et vue -

<?php 
foreach($nosaukums as $article) 
{ 
    echo '<h3>'.$article['virsraksts'].'</h3>'; 
} 
?> 

Je veux url - domain.com/article/name_of_article, mais domain.com/ article ne fonctionne pas - erreur HTTP_Exception_404 [ 404 ]: The requested URL article was not found on this server. Pourquoi j'ai cette erreur?

+0

vous devriez probablement dire la méthode au lieu de la fonction ... –

Répondre

1
  1. Mise en place de la route dans l'action des contrôleurs est une mauvaise idée - le déplacer à l'bootstrap.php
  2. Modifier l'itinéraire vers:

    Route::set('article', 'article(/<name>)', array('name' => '.+')) 
        ->defaults(array(
         'controller' => 'index', 
         'action' => 'article', 
    )); 
    
  3. Dans votre contrôleur, vous devez obtenir le nom de l'article en utilisant $this->request->param('name') (c'est probablement ce que vous devez affecter à votre variable $nosaukums, car elle n'est pas définie dans votre code)

+0

Merci beaucoup, matino! :) – reGative

1

Erreur 404 signifie qu'il n'existe pas. Cela ressemble plus à un problème mod_rewrite qu'à un problème de code (au moins, avec les détails actuels donnés). Vérifiez les journaux de votre serveur Web pour voir quelle page le serveur essaie réellement de charger.

Questions connexes