该行动在Laravel形式中指向何处

时间:2017-09-30 07:52:40

标签: php forms laravel laravel-5.5

PS:我是Laravel的新手。并关注this tutorial to create sample project

一切都很好。 但我无法弄清楚数据是如何插入数据库的。

这是表单代码

<form method="post" action="{{url('products')}}">
      {{csrf_field()}}
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <label for="name">Name:</label>
            <input type="text" class="form-control" name="name" >
          </div>
        </div>
        <div class="row">
          <div class="col-md-4"></div>
            <div class="form-group col-md-4">
              <label for="price">Price:</label>
              <input type="text" class="form-control" name="price">
            </div>
          </div>
        </div>
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <button type="submit" class="btn btn-success" style="margin-left:38px">Add Product</button>
          </div>
        </div>
      </form>

此处在onsubmit操作中,它正在调用&#34; {{url(&#39; products&#39;)}}&#34; 。 这是什么意思?有人可以帮忙吗?

如果您需要任何其他代码,请告诉我们。

web.php

<?php

Route::resource('products','ProductController');

Route::get('/', function () {
    return view('welcome');
});

ProductController.php

<?php

namespace App\Http\Controllers;
use App\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //

         $products = Product::all()->toArray();
        return view('products.index', compact('products'));

    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
                                return view('products.create');

    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //


        $product = $this->validate(request(), [
          'name' => 'required',
          'price' => 'required|numeric'
        ]);

        Product::create($product);

        return back()->with('success', 'Product has been added');;
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }



}

3 个答案:

答案 0 :(得分:1)

{{url('/products')}}表示url()函数将返回基本网址,并且该方法中添加的内容将附加到基础网址;

例如我的网站网址为https://stackoverflow.com/,然后上面的方法会返回

https://stackoverflow.com/products

在你的路线中你必须定义

Route::resource('products','ProductController');

Laravel路线将指向您的控制器和方法,并且在方法中您有逻辑插入数据库

为了更好地理解

<强> URL()

url函数生成给定路径的完全限定URL: 参考: https://laravel.com/docs/5.5/helpers#method-url

另外,要了解有关路线资源的更多信息,请参阅

https://laravel.com/docs/5.5/controllers#resource-controllers

答案 1 :(得分:1)

您要求的是Generating Urls这意味着它会将您的应用基本网址与字符串参数中的其他网址一起使用。因此,url('products')http://yourwebsite.com/products与表单上的操作相同,即表单将提交到的位置。

另一个对应的是Urls for named routes我会在这里添加一个标题,以防文档链接在任何时候中断:

enter image description here

你知道吗这意味着您的某条路线中有一个用于生成网址的名称。

由于其中一些辅助函数是的新手(假设您正在通过教程学习),我的建议是打开Laravel's documentation并自己查看事情。< / p>

答案 2 :(得分:0)

这似乎是一个名为&#39;产品的Route :: ressource&#39;并重定向到ProductController。