Laravel视图未找到异常

34 php exception-handling laravel laravel-4

我有路由功能找不到laravel视图的问题我做了composer dumpautoload但没有使用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');
Run Code Online (Sandbox Code Playgroud)

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    you@example.com
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
Run Code Online (Sandbox Code Playgroud)

Dea*_*hiu 41

当您尝试将整个项目目录移动到其他路径时,也会发生此错误.而且您在移动之前碰巧在下面运行以下命令.

php artisan optimize --force
php artisan config:cache
php artisan route:cache
Run Code Online (Sandbox Code Playgroud)

我的错误消息显示如下 在此输入图像描述

正如您所看到的那样,旧路径是在compiled.php中编写的.所以,解决问题.只需在新文件夹位置的项目文件夹下运行相同的命令AGAIN即可.

php artisan optimize --force
php artisan config:cache
php artisan route:cache
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 如果您正在使用`Homestead`,您将不得不介意在您的流浪盒中执行这些命令并使用`vagrant ssh`登录. (5认同)
  • 此评论对于追踪此错误非常有用。我们只在部署到 AWS 云时遇到了这个问题——我们无法在本地重现这个问题。对于通过 Elastic Beanstalk 部署到 AWS 的任何其他人,您需要在部署完成后运行这些命令;换句话说,通过部署后挂钩:https://forums.aws.amazon.com/thread.jspa?messageID=678066 (2认同)

Rub*_*zzo 32

当Laravel在您的应用程序中找不到视图文件时会发生这种情况.确保您有一个名为的文件:index.phpindex.blade.php在您的app/views目录下.

请注意,Laravel在调用时将执行以下操作View::make:

  • 对于View::make('index')Laravel将寻找文件:app/views/index.php.
  • 对于View::make('index.foo')Laravel将寻找文件:app/views/index/foo.php.

该文件可以具有以下两种扩展名中的任何一种:.php.blade.php.


Ami*_*mir 14

这个命令对我有用

php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

正如Laravel doc所说,默认情况下,Laravel配置为使用文件缓存驱动程序,该驱动程序将序列化的缓存对象存储在文件系统中.因此,它需要重新缓存文件系统,以便可以显示新添加的视图和路径.我也不确定为什么laravel实际需要重新安排

  • 到目前为止,我了解到,laravel 文档说默认情况下,Laravel 配置为使用文件缓存驱动程序,该驱动程序将序列化的缓存对象存储在文件系统中。因此它需要重新缓存文件系统,以便新添加的视图和路线可以显示。我也不确定为什么 Laravel 实际上需要重新缓存): (2认同)

Der*_*ima 11

就我而言,我必须跑步php artisan optimize:clear才能让一切恢复正常。


jef*_*f-h 7

有点尴尬的是,我发现了导致此错误的另一个相当微不足道的原因:我的刀片文件的文件名中有一个句号(例如resources/views/pages/user.invitation.blade.php)。当时确实觉得很有道理!

我试图像这样引用它:view('pages.user.invitation')

但当然 Laravel 正在寻找文件并resources/views/pages/user/invitation.blade.php抛出view not found.

希望这对某人有帮助。


Ina*_*man 5

即使显示了错误,也可能存在您的视图。因此,要解决此问题,您需要停止服务器并在终端上运行此命令。

php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

然后重新启动服务器