2016-11-20 71 views
1

你好,我爲我的創建表單使用createProduct頁面。在我創建了一個產品後,我想用參數重定向到同一頁面。你能幫我解決以下錯誤嗎?重定向錯誤laravel

web.php

Route::get('/admin/products/create','[email protected]'); 
Route::post('/admin/products/creating','[email protected]'); 

創建功能

public function creatingProduct(){ 

    $product = new Product(); 
    $product->name = Input::get('name'); 
    $product->description = Input::get('description'); 
    $product->price = Input::get('price'); 
    $categories = Category::all(); 

    try { 
     $product->save(); 
     $pageMessage = prepareMessage("alert-success","Yahoooo!!","Eklendiii"); 
    } catch (\Illuminate\Database\QueryException $e) { 
     $pageMessage = prepareMessage("alert-danger","Üzgünüz!!","Ürününüz eklenemedi"); 
    } 

    // return view('admin.createProduct',compact('categories','pageMessage')); 


    return Redirect::route('/admin/products/create')->with('pageMessage', $pageMessage); 
} 

創建功能

public function createProduct(){ 

    $categories = Category::all(); 
    return view('admin.createProduct',compact('categories')); 

} 

createProduct.bladde.php

@if(isset($pageMessage)) 
    {!!$pageMessage!!} 
    @endif 
    <form class="well form-horizontal" action=" {{url('admin/products/creating')}}" method="POST" id="contact_form"> 
    <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
    <!--{{ Form::open(['url' => '/admin/products/create', 'files' => true]) }}--> 
<div class="form-group"> 
    <label class="col-md-4 control-label">Ürün İsmi</label> 
    <div class="col-md-8 inputGroupContainer"> 

ERROR

InvalidArgumentException in UrlGenerator.php line 314: 
Route [/admin/products/create] not defined. 

回答

2

你傳遞一個URL重定向到::路線(),它需要一個路由的名稱來代替。

return redirect('/admin/products/create')->with('pageMessage', $pageMessage); 

如果您使用Laravel的舊版本,我相信這將是

return Redirect::to('/admin/products/create')->with('pageMessage', $pageMessage); 

你可以設置一個名爲路線和使用也,這是相當簡單:

Route::post('/admin/products/creating', [ 
    'uses' => '[email protected]', 
    'as' => 'products.create' 
]); 

好處是,您可以在整個應用程序中引用路徑名稱,並且如果您決定更改URL的格式,則只需在一個位置執行該操作。

+0

我已經加了我創造的功能和視圖。重定向的作品,如果我這樣做,就像你建議的方式,但我無法使用{!! pageMes​​sage !!} – rematnarab

+0

使用{! $ pageMes​​sage !!},你錯過了美元符號。 –

+0

這是一個打字錯誤。代碼中帶有美元符號。你可以看到上面。 – rematnarab

0

如果你使用route()您應該使用路徑名稱,而不是網址:

return redirect()->route('products.create'); 

所以,你能說出你的路線:

Route::get('/admin/products/create', ['as' => 'products.create', 'uses' => '[email protected]']); 

作爲替代方案,您可以使用網址如下:

return redirect('/admin/products/create'); 
+1

這是一個很好的答案,我將添加一個註釋:不是按照您在此顯示的方式命名路線,您可以這樣做:Route :: get('/ admin/products/create','productsController @ createProduct' ) - >名稱( 'products.create');' – GabMic

0

您定義了Redirect::route()這是不是你在裏面定義你喲你的路線文件。

應該象下面這樣:

return Redirect::to('/admin/products/create')->with('pageMessage', $pageMessage);