Php 拉威尔:可以';不要从表单上传信息
我正在尝试创建一个表单,登录用户可以将产品信息上载到DB。然后,我希望用户能够看到列表中的产品信息(仅限于他/她上传的产品) 这是我点击提交按钮时得到的错误 403此操作未经授权 当我重新加载页面时,会出现此错误 BadMethodCallException 调用未定义的方法App\Models\User::products() http://localhost:8000/products 我认为问题在于我如何获取产品信息。我有两个表,分别是用户表和产品表,这两个表是相关的。我试图做的是通过Php 拉威尔:可以';不要从表单上传信息,php,database,laravel,upload,Php,Database,Laravel,Upload,我正在尝试创建一个表单,登录用户可以将产品信息上载到DB。然后,我希望用户能够看到列表中的产品信息(仅限于他/她上传的产品) 这是我点击提交按钮时得到的错误 403此操作未经授权 当我重新加载页面时,会出现此错误 BadMethodCallException 调用未定义的方法App\Models\User::products() http://localhost:8000/products 我认为问题在于我如何获取产品信息。我有两个表,分别是用户表和产品表,这两个表是相关的。我试图做的是通过Au
Auth::user()
获取登录的用户信息,并进入包含user\u id列的products表
这是我在ProductController中的代码
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Product;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests\ProductRequest;
class ProductController extends Controller
{
public function index()
{
$products = Auth::user()->products()->get();
return view('product.show')->with(['products' => $products]);
}
public function create()
{
return view('product.create');
}
public function store(ProductRequest $request)
{
$product = new Product;
$product->user_id = $request->user()->id;
$product->name = $request->name;
$product->price = $request->price;
$product->description = $request->description;
$product->category_id = $request->category_id;
if ($request->hasFile('image')) {
$path = $request->file('image')->store('public/product');
$product->image = basename($path);
}
$product->save();
return redirect('/product/create')->with('message', 'registration success!');
}
}
这不是正确的方法吗?但我感到困惑的是,这部分是为了显示产品信息,为什么它阻止我上传信息
任何帮助都将不胜感激,因为我尝试了多种方法,但都没有成功
先谢谢你
其他信息
User.php
user()->products()
将是在您的用户模型中创建的一种关系,因此它取决于该关系的设置方式。403此操作未经授权。
错误,因为您必须授权表单请求,或者编写您自己的授权代码,或者仅返回true表单验证类ProductRequest
中的authorize()
方法中的code>。请参阅,您可能错过了用户
模型中的products()
关系。这就是调用未定义的方法App\Models\User::products()
的原因。请参阅Hi iamab.in,我已将authorize()方法更改为true,现在正在上载信息!但是,我仍然无法显示产品列表。似乎403和BadMethodCallException是两个不同的问题……嘿,我用正确的User.php编写了代码,现在它开始工作了!非常感谢你对我的帮助!我自己也不会想到这一点。你能在答案部分加上答案,让我选择你的答案吗?
$products = Auth::user()->products()->get();
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function tests()
{
return $this->hasMany('App\Test');
}
public function products()
{
return $this->hasMany('App\Product');
}
}