2015-11-23 2 views
1

Я пытаюсь создать страницу, где пользователь может поместить некоторые данные и сохранить или опубликовать их. Но когда я пытаюсь посетить мое место добавление URL я получаю сообщение об ошибке "ErrorException в PlaceController.php линии 101: Попытка получить свойство не-объект"ОшибкаException в строке PlaceController.php 101: попытка получить свойство не объекта - Laravel 5.1 *

Мой маршрут:

<?php 

/* 
|-------------------------------------------------------------------------- 
| Application Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register all of the routes for an application. 
| It's a breeze. Simply tell Laravel the URIs it should respond to 
| and give it the controller to call when that URI is requested. 
| 
*/ 

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


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

//authentication 
Route::controllers([ 
'auth' => 'Auth\AuthController', 
'password' => 'Auth\PasswordController', 
]); 

// check for logged in user 
Route::group(['middleware' => ['auth']], function() 
{ 
// show new post form 
Route::get('new-post','[email protected]'); 
// save new post 
Route::post('new-post','[email protected]'); 
// edit post form 
Route::get('edit/{slug}','[email protected]'); 
// update post 
Route::post('update','[email protected]'); 
// delete post 
Route::get('delete/{id}','[email protected]'); 
// display user's all posts 
Route::get('my-all-posts','[email protected]_posts_all'); 
// display user's drafts 
Route::get('my-drafts','[email protected]_posts_draft'); 
// add comment 
Route::post('comment/add','[email protected]'); 
// delete comment 
Route::post('comment/delete/{id}','[email protected]'); 
}); 

//users profile 
Route::get('user/{id}','[email protected]')->where('id', '[0-9]+'); 

// display list of posts 
Route::get('user/{id}/posts','[email protected]_posts')->where('id', '[0-9]+'); 
// display list of posts by category 
Route::get('category/{id}/posts','[email protected]_posts')->where('id', '[0-9]+'); 

// display single post 
Route::get('/{slug}',['as' => 'post', 'uses' => '[email protected]'])->where('slug', '[A-Za-z0-9-_]+'); 




//Places 

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

// check for logged in user 
Route::group(['middleware' => ['auth']], function() 
{ 
// show new post form 
Route::get('new-place','[email protected]'); 
// save new post 
Route::post('new-place','[email protected]'); 
// edit post form 
Route::get('edit/{slug}','[email protected]'); 
// update post 
Route::post('update','[email protected]'); 
// delete post 
Route::get('delete/{id}','[email protected]'); 
// display user's all posts 
Route::get('my-all-places','[email protected]_places_all'); 
// display user's drafts 
Route::get('my-places-drafts','[email protected]_places_draft'); 
// add comment 
//Route::post('comment/add','[email protected]'); 
// delete comment 
//Route::post('comment/delete/{id}','[email protected]'); 
}); 
//users profile 
//Route::get('user/{id}','[email protected]')->where('id', '[0-9]+'); 
// display list of posts 
Route::get('user/{id}/places','[email protected]_places')->where('id', '[0-9]+'); 
// display single post 
Route::get('/{slug}',['as' => 'place', 'uses' => '[email protected]'])->where('slug', '[A-Za-z0-9-_]+'); 

My Place контроллер:

<?php 

namespace App\Http\Controllers; 

use App\Places; 
use App\User; 
use App\Div; 
use Redirect; 
use App\Http\Controllers\Controller; 
use App\Http\Requests\PlaceFormRequest; 
use Illuminate\Http\Request; 


class PlaceController extends Controller 
{ 
    /** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     return view('home', array('page' => 'home')); 
    } 

    public function place(Request $request){ 
     //fetch 5 posts from database which are active and latest 
     $places = Places::where('active',1)->orderBy('created_at','desc'); 
     //page heading 
     $title = 'দর্শনীয় স্থান'; 
     $search_key = $request->input('body'); 
     if(!empty('$search_key')){ 
      $places->where('body','LIKE','%'.$search_key.'%'); 
     } 
     $places = $places->paginate(5); 
     //return home.blade.php template from resources/views folder 
     return view('place')->withPlaces($places)->withTitle($title); 
    } 

    /** 
    * Show the form for creating a new resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function create(Request $request) 
    { 
     // if user can post i.e. user is admin or author 
     if($request->user()->can_post()) 
     { 
      $divs = \DB::table('divs')->lists('div', 'id'); 
      return view('places.create')->with('divs', $divs); 
     }  
     else 
     { 
      return redirect('/')->withErrors('You have not sufficient permissions for writing post'); 
     } 
    } 

    /** 
    * Store a newly created resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\Response 
    */ 
    public function store(PlaceFormRequest $request) 
    { 
     $place = new Places(); 
     $place->title = $request->get('title'); 
     $place->url = $request->get('url'); 
     $place->location = $request->get('location'); 
     $place->gmap_location = $request->get('gmap_location'); 
     $place->slug = $place->url; 
     $place->body = $request->get('body'); 
     //$post->slug = str_slug($post->title); 
     // $place->author_id = $request->user()->id; 
     $place->div_id = $request->get('div'); 
     $place->source_url = $request->get('source_url'); 
     if($request->has('save')) 
     { 
      $place->active = 0; 
      $message = 'Place saved successfully';    
     }    
     else 
     { 
      $place->active = 1; 
      $message = 'Place added successfully'; 
     } 
     $place->save(); 
     return redirect('edit/'.$place->slug)->withMessage($message); 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function show($slug) 
    { 
     $place = Places::where('slug',$slug)->first(); 
     $div = \DB::table('divs')->where('id',$place->div_id)->first(); **//THIS IS THE ERROR LINE** 
     if(!$place) 
     { 
      return redirect('/')->withErrors('requested page not found'); 
     } 
    // $comments = $post->comments; 
     return view('places.show')->withPlace($place)->withDiv($div); 
    } 

    /** 
    * Show the form for editing the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function edit(Request $request,$slug) 
    { 
     $place = Places::where('slug',$slug)->first(); 
     if($place && ($request->user()->can_post() || $request->user()->is_admin())) 
      return view('places.edit')->with('place',$place); 
     return redirect('/')->withErrors('you have not sufficient permissions'); 
    } 

    /** 
    * Update the specified resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function update(Request $request) 
    { 
     $place_id = $request->input('place_id'); 
     $place = Places::find($place_id); 
     if($place && ($request->user()->can_post() || $request->user()->is_admin())) 
     { 
      $title = $request->input('title'); 
      $slug = str_slug($title); 
      $duplicate = Places::where('slug',$slug)->first(); 
      if($duplicate) 
      { 
      if($duplicate->id != $place_id) 
      { 
       return redirect('edit/'.$place->slug)->withErrors('Title already exists.')->withInput(); 
      } 
      else 
      { 
       $place->slug = $slug; 
      } 
      } 
      $place->title = $title; 
      $place->location = $request->get('location'); 
      $place->gmap_location = $request->get('gmap_location'); 
      $place->body = $request->input('body'); 
      $place->source_url = $request->get('source_url'); 
      if($request->has('save')) 
      { 
      $place->active = 0; 
      $message = 'Place saved successfully'; 
      $landing = 'edit/'.$place->slug; 
      }    
      else { 
      $place->active = 1; 
      $message = 'Place updated successfully'; 
      $landing = $place->slug; 
      } 
      $place->save(); 
       return redirect($landing)->withMessage($message); 
     } 
     else 
     { 
      return redirect('/')->withErrors('you have not sufficient permissions'); 
     } 
    } 

    /** 
    * Remove the specified resource from storage. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function destroy(Request $request, $id) 
    { 
     $place = Places::find($id); 
     if($place && ($request->user()->is_admin())) 
     { 
      $place->delete(); 
      $data['message'] = 'Place deleted Successfully'; 
     } 
     else 
     { 
      $data['errors'] = 'Invalid Operation. You have not sufficient permissions'; 
     } 
     return redirect('/')->with($data); 
    } 
} 
+0

попытался 'dd' этот' $ place-> div_id'? –

+0

В моей таблице мест есть поле с именем div_id. Я пытаюсь сравнить это с id таблицы divs. – Shahid

+0

Спасибо всем. Я понял свою проблему. В моем маршруте я использовал 2 middlewer, но нужен только один. – Shahid

ответ

0

Ваш чек на if(!$place) принадлежит, прежде чем использовать $place->div_id.

Возможно, что $place = Places::where('slug',$slug)->first(); не возвращает модель.

+0

Спасибо mshaps :) – Shahid