J'ai un problème avec la vue laravel qui ne se trouve pas par la fonction route. J'ai composé dumpautoload mais pas d'utilisation ArticleController.php
<?php
class ArticleController extends BaseController
{
public function showIndex()
{
return View::make('index');
}
public function showSingle($articleId)
{
return View::make('single');
}
}
//Route
Route::get('index', 'ArticleController@showIndex');
InvalidArgumentException
View [index] not found.
open: /opt/lampp/htdocs/laravel-project/bootstrap/compiled.php
foreach ((array) $paths as $path) {
foreach ($this->getPossibleViewFiles($name) as $file) {
if ($this->files->exists($viewPath = $path . '/' . $file)) {
return $viewPath;
}
}
}
throw new \InvalidArgumentException("View [{$name}] not found.");
}
protected function getPossibleViewFiles($name)
Server/Request Data
REDIRECT_UNIQUE_ID UfWlAn8AAQEAABR2VakAAAAF
REDIRECT_STATUS 200
UNIQUE_ID UfWlAn8AAQEAABR2VakAAAAF
HTTP_Host localhost
HTTP_USER_AGENT Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0
HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE en-US,en;q=0.5
HTTP_ACCEPT_ENCODING gzip, deflate
HTTP_COOKIE laravel_session=f94fpel78jn89nhah32mflqn15
HTTP_CONNECTION keep-alive
HTTP_CACHE_CONTROL max-age=0
PATH /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
LD_LIBRARY_PATH /opt/lampp/lib:/opt/lampp/lib
SERVER_SIGNATURE
SERVER_SOFTWARE Apache/2.4.4 (Unix) OpenSSL/1.0.1e PHP/5.4.16 mod_Perl/2.0.8-dev Perl/v5.16.3
SERVER_NAME localhost
SERVER_ADDR 127.0.0.1
SERVER_PORT 80
REMOTE_ADDR 127.0.0.1
DOCUMENT_ROOT /opt/lampp/htdocs
REQUEST_SCHEME http
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT /opt/lampp/htdocs
SERVER_ADMIN [email protected]
SCRIPT_FILENAME /opt/lampp/htdocs/laravel-project/public/index.php
REMOTE_PORT 50211
REDIRECT_URL /laravel-project/public/index
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING
REQUEST_URI /laravel-project/public/index
SCRIPT_NAME /laravel-project/public/index.php
PHP_SELF /laravel-project/public/index.php
REQUEST_TIME_FLOAT 1375053058.123
REQUEST_TIME 1375053058
Cela se produit lorsque Laravel ne trouve pas de fichier de vue dans votre application. Assurez-vous que vous avez un fichier nommé: index.php
ou index.blade.php
dans votre répertoire app/views
.
Notez que Laravel effectuera les opérations suivantes lors de l’appel View::make
:
View::make('index')
, Laravel recherchera le fichier: app/views/index.php
.View::make('index.foo')
, Laravel recherchera le fichier: app/views/index/foo.php
.Le fichier peut avoir l’une de ces deux extensions: .php
ou .blade.php
.
Cette erreur se produit également lorsque vous essayez de déplacer tout le répertoire du projet vers un autre chemin. Et il vous est arrivé d'exécuter les commandes suivantes ci-dessous AVANT de vous déplacer.
php artisan optimize --force
php artisan config:cache
php artisan route:cache
Le message d’erreur de mine s’affiche comme ceci
Comme vous pouvez le voir, l'ancien chemin était écrit dans le fichier compiled.php. Donc, pour résoudre le problème. Exécutez simplement la même commande AGAIN sous le dossier du projet dans votre nouvel emplacement.
php artisan optimize --force
php artisan config:cache
php artisan route:cache
J'espère que cela t'aides.
Cette commande fonctionne pour moi
php artisan config:cache
Comme le dit la documentation Laravel, Laravel est configuré par défaut pour utiliser le pilote de cache de fichiers, qui stocke les objets mis en cache et sérialisés dans le système de fichiers. Il doit donc remettre en cache le système de fichiers pour que les vues et les itinéraires récemment ajoutés soient disponibles. Je ne sais pas non plus pourquoi laravel doit réellement recacheter
Juste dans l'appel du contrôleur
return View('index');
sans pour autant
::make
arrêtez le serveur et exécutez cette commande sur le terminal.
php artisan config:cache
le démarrer le serveur
Dans mon cas, j’appelais View::make('User/index')
, où j’étais en réalité dans l’annuaire des utilisateurs et qui s’appelait index.blade.php. Ergo après que je l'ai changé pour View@make('user.index')
tous ont commencé à travailler.
Dans mon cas, Laravel 5.3
Route::get('/', function(){
return View('test');
});
test.blade.php ne rendait pas le rendu, mais d'autres vues affichaient le rendu sur localhost via XAMPP sur mac Lors de l'exécution du serveur artisan , la vue a commencé à afficher le même URL sur XAMPP.
php artisan serve
Pour éviter un tel scénario, il convient de tester les applications Laravel avec un serveur artisanal uniquement.
J'avais la même erreur, mais dans mon cas, la vue s'appelait seeProposal
.
Je l'ai changé en seeproposal
et cela a bien fonctionné ...
Ce n’était pas un problème lors des tests locaux, mais apparemment, Laravel fait une distinction avec les majuscules en cours de production. Donc, pour ceux qui ont des opinions en majuscules, je les changerais toutes en minuscules.
Comme @deanchiu l'a dit, cela peut arriver lorsque vous déplacez l'ensemble du projet vers un autre chemin ou un autre serveur.
Mais dans mon cas, je n'avais pas accès à la ligne de commande sur le serveur et exécuter les commandes suivantes AVANT de télécharger mon projet m'a aidé.
> php artisan route:clear
> php artisan config:clear