【问题标题】:(1/1) InvalidArgumentException Attribute [view] does not exist. Laravel 5.5(1/1) InvalidArgumentException 属性 [视图] 不存在。拉拉维尔 5.5
【发布时间】:2017-11-16 05:36:40
【问题描述】:

当我添加

Route::view('/', 'welcome');

在web.php上,我遇到了这个错误。

(1/1) 无效参数异常

Attribute [view] does not exist.
in RouteRegistrar.php (line 75)
at RouteRegistrar->attribute('view', '/')in Router.php (line 1098)
at Router->__call('view', array('/', 'welcome'))in Facade.php (line 221)
at Facade::__callStatic('view', array('/', 'welcome'))in web.php (line 20)
at require('C:\\wamp64\\www\\crystalcode\\routes\\web.php')in Router.php (line 327)
at Router->loadRoutes('C:\\wamp64\\www\\crystalcode\\routes/web.php')in Router.php (line 283)
at Router->group(array('middleware' => 'web', 'namespace' => 'App\\Http\\Controllers'), 'C:\\wamp64\\www\\crystalcode\\routes/web.php')in RouteRegistrar.php (line 104)
at RouteRegistrar->group('C:\\wamp64\\www\\crystalcode\\routes/web.php')in RouteServiceProvider.php (line 56)
at RouteServiceProvider->mapWebRoutes()in RouteServiceProvider.php (line 40)
at RouteServiceProvider->map()
at call_user_func_array(array(object(RouteServiceProvider), 'map'), array())in BoundMethod.php (line 29)
at BoundMethod::Illuminate\Container\{closure}()in BoundMethod.php (line 87)
at BoundMethod::callBoundMethod(object(Application), array(object(RouteServiceProvider), 'map'), object(Closure))in BoundMethod.php (line 31)
at BoundMethod::call(object(Application), array(object(RouteServiceProvider), 'map'), array(), null)in Container.php (line 539)
at Container->call(array(object(RouteServiceProvider), 'map'))in RouteServiceProvider.php (line 74)
at RouteServiceProvider->loadRoutes()in RouteServiceProvider.php (line 33)
at RouteServiceProvider->boot()in RouteServiceProvider.php (line 28)
at RouteServiceProvider->boot()
at call_user_func_array(array(object(RouteServiceProvider), 'boot'), array())in BoundMethod.php (line 29)
at BoundMethod::Illuminate\Container\{closure}()in BoundMethod.php (line 87)
at BoundMethod::callBoundMethod(object(Application), array(object(RouteServiceProvider), 'boot'), object(Closure))in BoundMethod.php (line 31)
at BoundMethod::call(object(Application), array(object(RouteServiceProvider), 'boot'), array(), null)in Container.php (line 539)
at Container->call(array(object(RouteServiceProvider), 'boot'))in Application.php (line 788)
at Application->bootProvider(object(RouteServiceProvider))in Application.php (line 771)
at Application->Illuminate\Foundation\{closure}(object(RouteServiceProvider), 17)
at array_walk(array(object(EventServiceProvider), object(LogServiceProvider), object(RoutingServiceProvider), object(AuthServiceProvider), object(CookieServiceProvider), object(DatabaseServiceProvider), object(EncryptionServiceProvider), object(FilesystemServiceProvider), object(FormRequestServiceProvider), object(FoundationServiceProvider), object(NotificationServiceProvider), object(PaginationServiceProvider), object(SessionServiceProvider), object(ViewServiceProvider), object(AppServiceProvider), object(AuthServiceProvider), object(EventServiceProvider), object(RouteServiceProvider)), object(Closure))in Application.php (line 772)
at Application->boot()in BootProviders.php (line 17)
at BootProviders->bootstrap(object(Application))in Application.php (line 208)
at Application->bootstrapWith(array('Illuminate\\Foundation\\Bootstrap\\LoadEnvironmentVariables', 'Illuminate\\Foundation\\Bootstrap\\LoadConfiguration', 'Illuminate\\Foundation\\Bootstrap\\HandleExceptions', 'Illuminate\\Foundation\\Bootstrap\\RegisterFacades', 'Illuminate\\Foundation\\Bootstrap\\RegisterProviders', 'Illuminate\\Foundation\\Bootstrap\\BootProviders'))in Kernel.php (line 162)
at Kernel->bootstrap()in Kernel.php (line 146)
at Kernel->sendRequestThroughRouter(object(Request))in Kernel.php (line 116)
at Kernel->handle(object(Request))in index.php (line 53)

如何解决这个问题,我是 laravel 的初学者,请帮我正确设置。

【问题讨论】:

    标签: php laravel-5.5


    【解决方案1】:

    这是 Laravel 5.5 中的一项新功能 - 它是调用 Route::get 方法的快捷方式,该方法使用 @rafik 描述的调用您的视图的回调。
    你可能正在使用以前版本的 Laravel,但正在阅读 5.5 文档中的 Route::view() 快捷方式。如果 Laravel 在新功能旁边添加一个注释,说明该功能从哪个版本可用(参见 CakePHP 文档、php 等),这实际上会很有帮助。

    因此,您需要将您的应用程序(composer update)更新到较新版本的 Laravel,或者使用标准的 Route 方法(get、post 等)并在函数中调用视图。

    【讨论】:

      【解决方案2】:

      ROUTE 的工作原理如下:

      Route::method('URL', 'Controller OR ControllerAction OR function');
      //     ^^^^^^  ^^^               ^^^^^^
      //        1     2                   3
      
      • 你想用来访问URL的方法(HTTP方法,即。 POSTGET 等...以及“特殊”方法resource)

      • 您想要的网址(即/home'/' 等...)

      • 如果您指定了resource 方法,则需要提供名称 您要使用的包含index 的控制器, create, store, edit update, delete 方法(你可以使用 php artisan make:controller myController --resourceto 自动 生成那种控制器。 IE。 HomeController,Laravel 将 自动为您创建链接到这些的所有路线 使用适当的HTTP 方法的方法。

      • 如果你指定一个普通的HTTP 方法,你需要提供一个 当用户访问该 URL 时将调用的函数,或 动作(控制器中的方法),即。 MyController@MyAction

      在您的示例中,在访问 URL 时简单地返回一个视图:

      Route::get('/', function(){
          return view('welcome');
      });
      

      路由门面只接受一个有效的方法(你访问路由的方式——GET, POST, PUT, DELETE——和一个resource(这意味着它会自动将这四种方法链接到你指定的控制器)第二个参数)

      【讨论】:

      • 谢谢,太好了,现在我知道它是如何工作的了,但是 laravel 需要使用文件扩展名“welcome.blade.php”?运行我的页面?
      • 因为当我尝试使用路由运行我的页面时,我也遇到了错误
      • (1/1) NotFoundHttpException in RouteCollection.php (line 179) at RouteCollection->match(object(Request)) in Router.php (line 546)
      • 您的视图必须放在 resources/views 目录中。并命名为“xxx.blade.php”。访问视图文件夹的子目录中的视图使用点语法:'myfolder.myview'。
      猜你喜欢
      • 1970-01-01
      • 2018-05-26
      • 2018-02-13
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2018-06-15
      相关资源
      最近更新 更多