2016-11-20 4 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"> 

ОШИБКА

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

ответ

2

вы передаете URL в Redirect :: маршрут(), который ожидает, что название маршрута вместо.

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

я добавил свою функцию создания и просмотра. Перенаправление работает, если я делаю это так, как вы предложили, но я не могу получить переменную pageMessage с помощью {!! pageMessage !!} – rematnarab

+0

Использовать {!! $ pageMessage !!}, вам не хватает знака доллара. –

+0

Это была типичная ошибка. Это со знаком доллара в коде. Вы можете видеть выше. – rematnarab

0

Вы должны использовать название маршрута вместо URL, если вы используете route():

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

Таким образом, вы можете назвать свой маршрут:

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

качестве альтернативы, вы можете использовать URL, как это:

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

Это хороший ответ, я добавлю примечание: вместо того, чтобы называть ваш маршрут тем, как вы здесь показываете, вы можете сделать это так: 'Route :: get ('/ admin/products/create', 'productsController @ createProduct') -> имя ('products.create'); ' – GabMic

0

Вы определили Redirect::route(), который не определяет вас внутри лет файл маршрута ur.

Это должно быть, как показано ниже:

return Redirect::to('/admin/products/create')->with('pageMessage', $pageMessage); 
Смежные вопросы