在Laravel中返回视图不显示正确的URL

时间:2014-08-28 10:45:33

标签: php url laravel laravel-4 routing

我现在通过使用资源路由进入路由

这是我在路由器中的代码,

Route::resource('item-sales', 'ItemSalesController');

这是我控制器中的代码

return View::make('item-sales.create')

当我返回视图时,它不会显示我需要的URL,

URL - item-sales/

我需要什么/ URL的预期输出是

URL - item-sales/create


这是我的控制器

 public function store()
        {
               $id = Input::get('item_id');
                $new_item = Item::find($id);
                $new_qty = Input::get('item_quantity');
                $total = $new_item->item_price * $new_qty;
                Session::put('added-items', [
                    0 => [
                        'item_id'       => $id,
                        'item_name'     => $new_item->item_name,
                        'item_price'    => $new_item->item_price,
                        'item_category'    => $new_item->category,
                        'item_quantity' => Input::get('item_quantity')
                    ]
                ]);
                $array = Session::get('added-items');
                $total = number_format($total, 2, '.', ',');
                return View::make('item-sales.create')
                ->with('items',$array)
                ->with('total',$total);
    }

2 个答案:

答案 0 :(得分:1)

如果您需要自己的自定义方法和单个路由的单个路由,请使用restful routing。

在Routes.php中:

Route::controller('item-sales', 'ItemSalesController');

在ItemSalesController.php中:

public function getCreate() {
   $id = Input::get('item_id');
   $new_item = Item::find($id);
   $new_qty = Input::get('item_quantity');
   $total = $new_item->item_price * $new_qty;
   Session::put('added-items', [
             0 => [
                    'item_id'       => $id,
                    'item_name'     => $new_item->item_name,
                    'item_price'    => $new_item->item_price,
                    'item_category'    => $new_item->category,
                    'item_quantity' => Input::get('item_quantity')
                  ]
   ]);
   $array = Session::get('added-items');
   $total = number_format($total, 2, '.', ',');

   return View::make('item-sales.create')
              ->with('items',$array)
              ->with('total',$total);
}

然后在Url中:路由到:item-sales / create

答案 1 :(得分:0)

检查文档中的Resource Controller。它的动作映射到使用HTTP动词的方法。因此,例如,要显示创建资源的表单,方法应为create,请求方法应为GETURL应为/item-sales/create

Verb         Path                         Action    Route Name

GET          /resource                    index     resource.index

// Follow this one

GET          /item-sales/create           create    item-sales.create

POST         /resource                    store     resource.store
GET          /resource/{resource}         show      resource.show
GET          /resource/{resource}/edit    edit      resource.edit
PUT/PATCH    /resource/{resource}         update    resource.update
DELETE       /resource/{resource}         destroy   resource.destroy

确保路由和路由名称从命令提示符(终端)运行php artisan routes,并准确使用路由名称和URL。

store方法用于保存并使用POST方法/ http动词,而URL则为/item-sales。要显示用于创建新资源的表单(通过在表单中​​提取用户输入),您应该使用create方法,在这种情况下,http动词将是GET。所以你的行动应该是这样的:

public function create()
{
    // Return the view (empty form)
    // app/views/item-sales/create.blade.php
    return Vire::make('item-sales.create');
}

要访问/调用此方法,您应使用item-sales/create作为URL。然后,当您提交表单进行保存时,请使用store方法,因此,表单的操作可能类似于route('item-sales.store')