2017-03-07 9 views
0

は、私はこれはおそらく、本当に愚かなものですが、私はちょうどそれを修正するように見えることはできません知っています。NotFoundHttpException:

私はこのエラーにHandler.php線131で

NotFoundHttpException取得しています:モデルなしクエリ結果[アプリケーション\モジュール\メニュー\モデル\メニュー]。

そして、それを修正するように見えることはできません。現時点では、メニューモデルを求めてはいけません。

はここ

Route::get('/signup', [ 
    'uses' => '[email protected]', 
    'as' => 'signup' 
]); 

はここに私のOpenController.php

<?php 

namespace App\Modules\Open\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

use App\Modules\Menus\Models\Menu; 
use App\Modules\Authors\Models\Story; 

class OpenController extends Controller 
{ 
    public function index(){ 
     $menus_child = Menu::where('menu_id', 0)->with('menusP')->get(); 
     $menu = Menu::where('id', 1)->orWhere('title', 'home')->firstOrFail(); 
     return view('open::index', compact('menus_child', 'menu')); 
    } 

    public function content($id){ 
     $menus_child = Menu::where('menu_id', 0)->with('menusP')->get(); 
     $menu = Menu::where('id', $id)->firstOrFail(); 
     $layout = $menu->type; 
     $stories = Story::where('type', 'public')->get(); 

     return view('open::public/'.$layout, compact('menus_child', 'menu', 'stories')); 
    } 

    public function signup(){ 
     echo "sign up"; 
     die(); 
    } 
} 

ここに私のsignup.blade.phpここ

@extends('templates::layouts.public') 
@section('content') 
    <h1>signup blade</h1> 
@stop 

私の公衆があるである私のroute.phpです。ブレード.phpレイアウト

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Website</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <link href="https://fonts.googleapis.com/css?family=Cherry+Swash|Crafty+Girls|Homemade+Apple|Italianno|Parisienne|Ranga|Rochester" rel="stylesheet"> 
     <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> 
     {!! Html::style('css/bootstrap.min.css') !!} 
     {!! Html::style('css/style.css') !!} 
     {!! Html::script('js/jquery-3.1.1.min.js') !!} 
     {!! Html::script('js/bootstrap.min.js') !!} 
     {!! Html::script('js/main.js') !!} 
    </head> 
    <body> 
     <div class="container"> 
      <div id="main"> 
       <div id="header"> 
        <div id="logo"> 
         <div class="row"> 
          <div class="col-lg-6"> 
           <h1>Website</h1> 
          </div> 
          <div class="col-lg-6"> 
           <div class="slogan"> 
            {!! Html::link('/signup', 'Signup') !!}/{!! Html::link('/login', 'Login') !!} 
           </div> 
          </div> 
         </div> 
        </div> 
        @include('menus::menu') 
       </div> 
       <div id="site_content"> 
        <div id="content"> 
         @yield('content') 
        </div> 
       </div> 
      </div> 
     </div> 
    </body> 
</html> 

そして、これは私が問題の原因を見つけた私のmenu.blade.php

<div id="menubar"> 
    <ul class="nav navbar-nav" id="menu"> 
     @foreach($menus_child as $grandfather) 
      @if($grandfather->menu_id) 
       <li> 
      @elseif($grandfather->title == 'Home') 
       <li class="parent {{ menu_active([$grandfather->id]) }}"> 
      @elseif(count($grandfather->menusP()->where('menu_id', '>', 0)->get())) 
       <li class="dropdown {{ menu_active([$grandfather->id]) }}"> 
      @else 
       <li class="parent {{ menu_active([$grandfather->id]) }}"> 
      @endif 

      @if(count($grandfather->menusP()->where('menu_id', '>', 0)->get())) 
       {!! HTML::decode(HTML::link($grandfather->id, $grandfather->title.'<span class="caret"></span>', array('class' => 'dropdown-toggle')))!!} 
      @else 
       {!! HTML::link($grandfather->id, $grandfather->title) !!} 
      @endif 

      @if(count($grandfather->menusP)) 
       <ul class="dropdown_menu"> 
        @foreach($grandfather->menusP as $father) 
         @if($father->menu_id) 
          <li class="parent_child"> 
         @else 
          <li> 
         @endif 

         {!! HTML::link($father->id, $father->title) !!} 
        @endforeach 
       </ul> 
      @endif 
     @endforeach 
    </ul> 
</div> 

答えて

4

です。それは私のルートをどのように置いたかでした。だから私がしたすべては、このポストは、私は非常によく似た(あるいは同じ)問題を解決する助けた私のルートの上に私のサインアップのルートを入れて、それは私の問題を解決し

+0

これは私の問題を解決しましたが、その理由を知っていますか? – Gus

+0

@Gus - わかりません。私はちょうど回っていたが、もしあなたがなぜ私がそれを感謝するかを知るなら、なぜそれが起こったのか混乱しているので、私に知らせてください – Isis

0

@Gus、@Isis

ました。私の特定のケースでは、私はすぐにそれが簡単なユーザ・エラーに気づいた -

は、後続のルート与えられ、次のURLを訪れ考えてみましょう...と、これは、これが起こるかもしれません理由を説明する役立ちます

GET app.com /チーム/アドオンの好きな

[悪い] ルート:明らか

// Bad Routing Logic 
Route::get('/team/{team}', '[email protected]'); 
Route::get('/team/add-favorite', '[email protected]'); 
Route::get('/team/add-favorite/{conference}', '[email protected]'); 

、第二の経路は、(/チーム/アドオンのお気に入り)と呼ばれることはありません/チーム/ {チーム}にルーティングされ、[チーム]パラメータには「追加お気に入り」の値が入力されているためです。 、

// Still not good practice, but works 
Route::get('/team/add-favorite', '[email protected]'); 
Route::get('/team/add-favorite/{conference}', '[email protected]'); 
Route::get('/team/{team}', '[email protected]'); 

これは間違いなく、まだベストプラクティスではありません。

私のソリューションは、単に...そうのように、ルートの順序を再配置し

[より良い] ルートにしました少なくとも各ルートが適切に解決できるようにします。

app.com/team/add-favoriteは、アプリのような最初のルートと一致するようになりました。com/team/17はまだ3番目にリストされたルートになり、適切なIDを持つTeamControllerに渡されます。

この場合も、「共有」エンドポイントでこのようにルーティングすることは、間違いなく問題を引き起こす可能性があるため、お勧めしません。つまり、ID = 'add-favorite'のチームは決して存在しないことを望みます。非常に可能性は低いですが、あなたはポイントを得る...

希望するこれは助けて!

関連する問題