Laravel 形式的动作指向哪里

Where is the action is pointing to in Laravel form

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 操作中,它调用 "{{url('products')}}" 。 这是什么意思?有人可以帮忙吗?

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

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)
    {
        //
    }



}

这似乎是一个名为 'product' 的 Route::ressource 并重定向到 ProductController。

{{url('/products')}} 意味着 url() 函数将 return base url 并且在该方法中添加的任何内容都将附加到 base ur;

例如我的网站 url 是 https://whosebug.com/ 然后上面的方法将 return

https://whosebug.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

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

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

你看。这意味着在你的一条路线中有你用来生成 url.

的名称

由于其中一些辅助函数对 来说是新的(假设您正在按照教程学习),我的建议是打开 Laravel's documentation 看看效果如何一个人。