La Pagination dans Laravel 4 fonctionne pour une seule page. mais ne fonctionne pas pour un autre
J'ai téléchargé le kit de démarrage pour laravel à l'aide de sentinelle à partir de GitHub.
Tout va bien jusqu'à présent. Page de Blog a la pagination. Je suis en mesure de changer le nombre d'articles par page, comme j'aime en changeant la même pagination(x) de la valeur.
Maintenant problème c'est que, j'ai créé une nouvelle page manuellement par moi-même appelé "la Recherche", qui affiche les résultats pour les mots clés recherchés.
Ici, j'ai ajouté la même pagination, il indique le nombre d'éléments par page comme mentionné, les numéros de page, des flèches. Tout est parfait, mais quand je clique sur la page 2, il affiche une PAGE blanche. La page source de la page blanche est également vide. L'URL est parfait pour la page deux. Il génère correctement comme
sitename.dev/search?page=2
Merci de me guider où je vais mal. Le blog de la page de la pagination fonctionne toujours très bien. Le problème se produit uniquement dans le nouvellement créé de RECHERCHE la page de la pagination.
C'est mon Contrôleur
public function postSearch()
{
$searchString = Input::get('searchInput');
$posts = Post::where('title', 'LIKE', '%' . $searchString . '%')->orderBy('created_at', 'DESC')->paginate(4);
if($searchString){
return View::make('frontend/search', compact('posts'))->with('success', 'Account successfully updated')->with('posts', $posts);
}
else{
return Redirect::route('home')->with('error', 'Please enter Search Term');
}
}
C'est ma Route
Route::any('/search', 'BlogController@postSearch');
Vous devez vous connecter pour publier un commentaire.
Tout d'abord
Lors
compact
vous êtes déjà, y compris la$posts
var à être utilisé comme$posts
dans la vue, exactement la même chose que vous feriez à l'aide dewith('posts', $posts)
. Si ce dernier peut être retiré. Si vous voulez charger plus de vars à l'aide decompact
juste separe les noms de variables par des virgules.Vous êtes à la pagination de l'élément dans le
POST
action deSearch
, lorsque vous cliquez sur un des liens de pagination ou appelezpage=2
vous n'êtes pas sous lapostSearch
méthode, vous êtes probablement appelgetSearch
que vous n'êtes pas en train de faire maintenant unPOST
demande.Ont un look à Reposant contrôleurs
method=>'GET'
à ce tableau et vous verrez qu'il ajoute toutes les valeurs de champ de formulaire à l'URL. En utilisant cette méthode vous permettra d'appeler lagetSearch
fonction de la place de lapostSearch
. L'essayerFormulaire de recherche de mieux à l'aide de la méthode GET, parce que c'est facile de mettre en signet/enregistrer l'URL pour l'utiliser plus tard. Dans Laravel 4 de la Pagination, il y a une méthode pour ajoute la chaîne de requête. Donc, nous pouvons poursuivre la recherche de la chaîne de recherche dans d'autres pages.
Docs:
http://laravel.com/docs/pagination#appending-to-pagination-links
Mon code:
Formulaire De Recherche
De routage
Contrôleur
Vue De La Lame
À la méthode d'affichage de la pagination:
Afin que nous puissions garder la q=? querystring dans d'autres pages (ex: /lib/search?page=2&q=pomme)
{!! $users->appends($filters)->render() !!}
au lieu de->links()
et$users->setPath('search');
dans le Modèle, après queryng et l'enregistrement des filtres dans$filters
tableau.Quelques choses à vérifier.
app/routes.php
fichier.<?php echo $articles->links(); ?>
.En fin de compte, il semble y avoir une sorte d'erreur, c'est pourquoi la page est rendu vide. En essayant de tourner des erreurs php dans votre dev env et voir ce qui se passe après.
ajoute résolu mon problème. Aussi l'utilisation de ajoute permettra à nos utilisateurs d'enregistrer/mettre en signet la URL pour une utilisation future.
Mais un problème est, il n'est pas en ajoutant de la Première page de résultat.