重定向错误laravel

问题描述:

你好,我为我的创建表单使用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. 

你传递一个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

如果你使用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

您定义了Redirect::route()这是不是你在里面定义你哟你的路线文件。

应该象下面这样:

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