2017-04-10 30 views
1

Alrightyを定義していないので、私は私が見て訪問者のための私のプロジェクトをロードするページがあります。Laravel 5.4は、ルート[project.view]

@extends('layouts.master') 

@section('title', 'Projects') 

@section('content') 
    <div class="container"> 
     <div class="contact-wrapper "> 
      <h1 class="text-center">Project overview</h1> 
      @foreach($projects as $project) 
       <div class="col-md-4 no-padding"> 
        <div class="project-image col-md-12 no-padding"> 
         <a href="{{ route('project.view', $project->id) }}"> 
          <img src="{{ $project->image }}" class="col-md-12 image"> 
          <p class="image-text"> 
           {{ $project->title }} 
          </p> 
         </a> 
        </div> 
       </div> 
      @endforeach 
     </div> 
    </div> 
@stop 

をしかし、私は次のエラー得られます:

Route [project.view] not defined. (View: /home/vagrant/Code/test/resources/views/projects.blade.php) 

<?php 


Auth::routes(); 


Route::get('/', '[email protected]'); 


Route::group(['middleware' => ['web']], function() { 
    Route::resource('user', 'UserController', ['only' => ['index', 'show']]); 
    Route::resource('project', 'ProjectController', ['only' => ['index', 'show', 'view']]); 
    Route::resource('blog', 'BlogController', ['only' => ['index', 'show']]); 
    Route::resource('review', 'ReviewController', ['only' => ['index', 'show']]); 
}); 

Route::group(['middleware' => ['auth']], function() { 
    Route::resource('user', 'UserController', ['only' => ['store', 'update', 'destroy', 'create', 'edit', 'search', 'cms']]); 
    Route::resource('project', 'ProjectController', ['only' => ['store', 'update', 'destroy', 'create', 'edit', 'search', 'cms']]); 
    Route::resource('blog', 'BlogController', ['only' => ['store', 'update', 'destroy', 'create', 'edit', 'search', 'cms']]); 
    Route::resource('review', 'ReviewController', ['only' => ['store', 'update', 'destroy','create', 'edit', 'search', 'cms']]); 
    Route::get('/home', '[email protected]'); 
}); 

以下のように私は私のweb.phpルートファイルに定義された、私のProjectController.phpに私がshoとしての機能を定義している間

public function view($id) 
    { 

     $projects = Project::findOrFail($id); 

     $users = User::all(); 

     $userArray = []; 
     foreach ($users as $user) { 
      $userArray[$user->id] = $user->username; 
     } 


     return view('project.view', compact('projects', 'userArray')); 
    } 

以下WN私は、リソースコントローラは、標準インデックス/表示/更新などなどの機能を処理する方法について読んしかし、どのように私はルート正しくこのことはProjectControllerからちょうど私の機能ますのでできましたか?

私は正しいフォルダにビューを持っており、私はそれらを正しく呼び出されていることを99%確信しています。ビューへのパスは次のとおりです。resources/views/project/view.blade.php

ありがとうございます!

+0

あなたは正しいでしょうか、デフォルトのルートはlaravelが定義したルートです。 'show'、' store'などを意味します。あなたのケース 'view'のリソースコントローラにさらにメソッドを追加する必要があるときは、' Route :: get( 'project-view'、 'ProjectController @ビュー ') 'のようなものです。 –

答えて

1

すでに説明したように、リソースコントローラは既定のCRUDアクションのみを処理します。私が知っているように、あなたは別のあなたのルートに名前を付けたい場合は、あなたがそれを「名前の変更」することができます

https://laravel.com/docs/5.4/controllers#resource-controllers

(とにかく意図されていない)、この動作をオーバーライドすることはできませんが、他のルートを追加したい場合/アクションは、あなたのコントローラに別のルートを定義する必要があります(Route :: get、Route :: postなど)。

+0

これは完璧にうまくいきましたありがとうございました! –

関連する問題