【问题标题】:Laravel view not found exceptionLaravel 视图未发现异常
【发布时间】:2013-07-28 15:30:46
【问题描述】:

我的路由函数找不到 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');

无效参数异常

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

【问题讨论】:

  • 您的app/views 目录中有index.phpindex.blade.php 文件吗?
  • 那是你的问题。您必须实际创建视图文件...如果您这样做 View::make('index'),Laravel 将在您的 app/views 目录下查找名为“index”(以 .php 或 .blade.php 结尾)的文件。
  • 只是我想问你什么时候调用 View::make('index');将创建视图
  • Laravel 会从你的视图文件中创建视图。当你执行View::make 时,Laravel 实际上会找到指定的视图文件,然后用视图数据填充它。因此,您必须创建视图文件。 Laravel 不会为你做的。
  • 即使我也遇到了同样的问题,我已经在我的项目中安装了 laravel 护照,我不知道为什么会这样。如果有人知道请告诉我

标签: php laravel laravel-4 exception-handling


【解决方案1】:

如果您在项目中使用 GIT,请不要忘记 make git add 。并在将项目移动到另一端之前提交,也不要忘记清理缓存。

【讨论】:

    【解决方案2】:

    如果您不是以 root 用户身份访问文件,则应更改文件的访问权限

    将访问组更改为访问文件

    另外,其他人可以访问文件 这对我有用

    【讨论】:

      【解决方案3】:

      除了这些答案之外,如果您的视图位于项目的异常目录中,则必须将以下内容添加到 /config/view.php

          'paths' => [
          resource_path('views'),
          resource_path('../path/from/project/route/to/view')
      ],
      

      【讨论】:

        【解决方案4】:

        在你的 cmd 上使用它然后运行你的项目。

        php artisan config:cache php artisan route:cache php artisan 控制器:缓存 php 工匠优化:清除

        【讨论】:

          【解决方案5】:

          我有同样的错误。我在视图目录下创建了一个名为users 的目录,并在其中创建了一个index.blade.php 文件。当调用这个文件时,你应该写users.index 来指明你的路径。或者只是在视图下创建index.blade.php 文件。希望这能帮助遇到同样问题的人

          【讨论】:

            【解决方案6】:

            在我的情况下,我必须运行 php artisan optimize:clear 才能使一切恢复正常。

            【讨论】:

              【解决方案7】:

              如果您的查看路径为真,请先尝试config:cacheroute:cache,如果没有任何更改,请检查您的资源路径权限是否为真。

              示例:您可以在 ubuntu 中使用:

              sudo chgrp -R www-data resources/views
              sudo usermod -a -G www-data $USER
              

              【讨论】:

                【解决方案8】:

                在未找到的视图上检查您的刀片语法 我只是修复我的

                @if
                @component
                @endif 
                @endcomponent
                

                @if
                @component
                @endcomponent
                @endif 
                

                【讨论】:

                  【解决方案9】:

                  在views文件夹中创建index.blade.php文件,应该就是这样

                  【讨论】:

                    【解决方案10】:

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

                    php artisan config:cache
                    

                    然后重启服务器

                    【讨论】:

                    • 为了提高应用程序的速度,您应该使用 'config:cache' Artisan 命令将所有配置文件缓存到一个文件中。这会将应用程序的所有配置选项组合到一个文件中,该文件将由框架快速加载。您通常应该在生产部署例程中运行“php artisan config:cache”命令。该命令不应在本地开发期间运行,因为在应用程序开发过程中经常需要更改配置选项。
                    【解决方案11】:

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

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

                    当然,Laravel 会在 resources/views/pages/user/invitation.blade.php 查找文件并抛出 view not found

                    希望这对某人有所帮助。

                    【讨论】:

                    • 这是我的确切问题。
                    【解决方案12】:

                    我遇到了同样的错误,但在我的情况下,视图被称为seeProposal

                    我把它改成了seeproposal,效果很好……

                    在本地测试时这不是问题,但显然 Laravel 区分了在生产中运行的大写字母。所以对于那些有大写字母的意见,我会将它们全部改为小写。

                    【讨论】:

                      【解决方案13】:

                      这个命令对我有用

                      php artisan config:cache
                      

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

                      【讨论】:

                      • 到目前为止,据我所知,laravel 文档说默认情况下,Laravel 配置为使用文件缓存驱动程序,它将序列化的缓存对象存储在文件系统中。所以它需要重新缓存文件系统,以便可以显示新添加的视图和路由。我也不知道为什么 laravel 实际上需要重新缓存):
                      【解决方案14】:

                      正如@deanchiu 所说,当您将整个项目移动到另一个路径或服务器时可能会发生这种情况。

                      但在我的情况下,我无法访问服务器上的命令行,并且在上传项目之前运行以下命令对我有帮助。

                      > php artisan route:clear
                      > php artisan config:clear
                      

                      【讨论】:

                        【解决方案15】:

                        就我而言,Laravel 5.3

                        Route::get('/', function(){
                            return View('test');
                        });
                        

                        test.blade.php 没有呈现,但其他一些视图正在通过 Mac 上的 XAMPP 在 localhost 上呈现。 在运行 artisan server 后,视图开始通过 XAMPP 呈现相同的 url。

                        php artisan serve
                        

                        为避免任何此类情况,应仅使用 artisan 服务器测试 Laravel 应用程序。

                        【讨论】:

                          【解决方案16】:

                          就在控制器调用中

                          return View('index');
                          

                          没有

                          ::make
                          

                          【讨论】:

                          • 看来 OP 正在使用 Laravel 4,在这种情况下 view 助手不存在。这行不通。
                          • 它之所以有效,是因为您使用的是 Laravel 5。正如 Jared 所说,Laravel 4 中不存在 view 助手。
                          【解决方案17】:

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

                          php artisan optimize --force
                          php artisan config:cache
                          php artisan route:cache
                          

                          我的错误信息显示如下

                          如您所见,旧路径写在 compiled.php 中。所以,要解决问题。只需在新文件夹位置的项目文件夹下再次运行相同的命令即可。

                          php artisan optimize --force
                          php artisan config:cache
                          php artisan route:cache
                          

                          希望这会有所帮助。

                          【讨论】:

                          • 这条评论对于追踪这个错误非常有用。我们只在部署到 AWS 云时遇到了这个问题——我们无法在本地重现这个问题。对于通过 Elastic Beanstalk 部署到 AWS 的其他任何人,您需要在部署完成后运行这些命令;换句话说,通过部署后挂钩:forums.aws.amazon.com/thread.jspa?messageID=678066
                          • 如果你使用Homestead,你必须记住在你的vagrant box中执行这些命令并使用vagrant ssh登录。
                          • @SamuelMS 你能分享你在部署后脚本中的内容吗?我正在运行php artisan config:cache,但 env() 调用未解析,因此生成的配置缓存文件具有所有默认值。
                          • 我可以通过在 php artisan config:cache 之前执行 source /opt/elasticbeanstalk/support/envvars 来修复它
                          • 如果您在 docker 上并使用映射到本地驱动器的持久卷,请确保在 docker 容器而不是本地映射驱动器中运行 artisan 命令。
                          【解决方案18】:

                          在我的例子中,我调用了View::make('User/index'),实际上我的视图位于用户目录中,它被称为 index.blade.php。因此,在我将其更改为 View@make('user.index') 后,一切都开始工作了。

                          【讨论】:

                            【解决方案19】:

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

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

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

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

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 2010-12-11
                              • 1970-01-01
                              • 1970-01-01
                              • 2016-03-06
                              • 1970-01-01
                              • 1970-01-01
                              • 2014-04-22
                              • 2016-06-01
                              相关资源
                              最近更新 更多