2016-09-07 2 views
1

Неявная привязка модели в laravel 5.1 описана очень плохо. Когда я пытаюсь сделать что-то в ручном режиме, я всегда получаю ошибку ReflectionException in RouteDependencyResolverTrait.php line 81: Class App\Http\Controllers\App\News does not exist
Конечно, это проблема с пространством имен, но я не могу ее исправить. Я попытался прокомментировать $namespace, но мне это не помогло.Неявная привязка модели в laravel 5.1

<?php namespace App\Providers; 

use Illuminate\Routing\Router; 
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; 

class RouteServiceProvider extends ServiceProvider 
{ 
    protected $namespace = 'App\Http\Controllers'; 

    public function boot(Router $router) 
    { 
     parent::boot($router); 
     $router->model('newsitem', 'App\News'); 
    } 

здесь описание ошибки

Whoops, looks like something went wrong. 
1/1 ReflectionException in RouteDependencyResolverTrait.php line 81: Class App\Http\Controllers\App\News does not exist 

    in RouteDependencyResolverTrait.php line 81 
    at ReflectionParameter->getClass() in RouteDependencyResolverTrait.php line 81 
    at ControllerDispatcher->transformDependency(object(ReflectionParameter), array('newsitem' => object(News)), array('newsitem' => object(News))) in RouteDependencyResolverTrait.php line 61 
    at ControllerDispatcher->resolveMethodDependencies(array('newsitem' => object(News)), object(ReflectionMethod)) in RouteDependencyResolverTrait.php line 44 
    at ControllerDispatcher->resolveClassMethodDependencies(array('newsitem' => object(News)), object(NewsController), 'getItem') in ControllerDispatcher.php line 162 
    at ControllerDispatcher->call(object(NewsController), object(Route), 'getItem') in ControllerDispatcher.php line 112 
    at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
    at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114 
    at ControllerDispatcher->callWithinStack(object(NewsController), object(Route), object(Request), 'getItem') in ControllerDispatcher.php line 69 
    at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\NewsController', 'getItem') in Route.php line 203 
    at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134 
    at Route->run(object(Request)) in Router.php line 708 
    at Router->Illuminate\Routing\{closure}(object(Request)) 
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
    at Pipeline->then(object(Closure)) in Router.php line 710 
    at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 675 
    at Router->dispatchToRoute(object(Request)) in Router.php line 635 
    at Router->dispatch(object(Request)) in Kernel.php line 236 
    at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50 
    at VerifyCsrfToken->handle(object(Request), object(Closure)) 
    at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49 
    at ShareErrorsFromSession->handle(object(Request), object(Closure)) 
    at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62 
    at StartSession->handle(object(Request), object(Closure)) 
    at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
    at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) 
    at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59 
    at EncryptCookies->handle(object(Request), object(Closure)) 
    at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 
    at CheckForMaintenanceMode->handle(object(Request), object(Closure)) 
    at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
    at Pipeline->then(object(Closure)) in Kernel.php line 122 
    at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87 
    at Kernel->handle(object(Request)) in index.php line 54 

ответ

0

Для меня это выглядит не так:

App\Http\Controllers\App\News

, если у вас есть подкаталог в App \ Http \ Контроллеры называемых App.

Если вы имеете App каталог в каталоге контроллеров, убедитесь, что ваш файл (ы) маршрут имеет правильное название интервала между

Route::group([ 
     'namespace' => 'App', 
    ], function() { 

     // News resourceful controller 
     Route::resource('/','NewsController'); 
}); 

Если это все равно не поможет, вы можете разместить пример вашего контроллера?

0

это рабочий раствор

RouteServiceProvider.php

namespace App\Providers; 

use Illuminate\Routing\Router; 
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; 
use Route; 
use App\News; 

class RouteServiceProvider extends ServiceProvider 
{ 
    protected $namespace = 'App\Http\Controllers'; 

    public function boot(Router $router) 
    { 
     parent::boot($router); 

     Route::bind('newsitem', function($item) { 
      return News::whereSef($item)->firstOrFail(); 
     }); 

    } 

routes.php

Route::get('news/{newsitem}', ['as' => 'news.item', 'uses' => '[email protected]']); 

NewsController.php

public function getItem($newsitem) 
{ 
    dd($newsitem); 
} 
Смежные вопросы