如何在新页面中显示所选产品
Posted
技术标签:
【中文标题】如何在新页面中显示所选产品【英文标题】:How to show selected product in the new page 【发布时间】:2018-02-07 12:04:54 【问题描述】:我已经按照这条指令做了所有事情:
Laravel view product page not found
一切正常。
但是现在,当我从列表中选择产品时,单击它,然后新窗口打开,我应该会看到所选产品的详细信息,但出现错误:
“未定义变量:用户(查看:C:\xampp\htdocs\Test_Laravel\resources\views\view_object.blade.php)”
我的view_object.blade.php
看起来:
<div class="header">
@include('header')
</header>
<body>
<div class="content-products">
@foreach($user as $users)
<div id="myDiv">
<div class="products">
<img src=" $users->Image" ><br>
$users->Title<br>
$users->Content<br>
$users->Price€<br>
</div>
</div>
@endforeach
</div>
</body>
这是我的控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\file;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Collection;
class BracController extends Controller
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
return view('insertBrac');
public function showBrac()
$user=file::all();
return view('apyrankes', compact('user'));
public function view_brac()
$object = \DB::table('braclets')->where('BrackID' , request('brackId'))->get();
return view('view_object', compact('Object'));
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
//
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
$user = new file;
$user->Title= Input::get('title');
$user->Content= Input::get('content');
$user->Price= Input::get('price');
if (Input::hasFile('image'))
$file=Input::file('image');
$file->move(public_path(). '/uploads', $file->getClientOriginalName());
$user->Image = $file->getClientOriginalName();
$user->save();
return redirect( "insertBrac" );
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
//
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
//
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
//
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
//
【问题讨论】:
显示将 $users 传递给视图的代码 你需要知道的一切:“未定义的变量:用户”没有这样的变量。定义它! 至少你可以用控制器代码添加你的路由定义。 【参考方案1】:改变
@foreach($user as $users)
<div id="myDiv">
<div class="products">
<img src=" $users->Image" ><br>
$users->Title<br>
$users->Content<br>
$users->Price€<br>
</div>
</div>
@endforeach
到
<div id="myDiv">
@if($user)
<div class="products">
<img src=" $user->Image" ><br>
$user->Title<br>
$user->Content<br>
$user->Price€<br>
</div>
@endif
</div>
在您的控制器中:
public function view_brac()
$object = DB::table('braclets')->where('BrackID' , request('brackId'))->first();
return view('view_object', array('user' => $object));
【讨论】:
"未定义变量:用户(查看:C:\xampp\htdocs\Test_Laravel\resources\views\view_object.blade.php)" 将控制器附加到您的问题中。 感谢您的更新,但更改后,我收到错误消息:“尝试获取非对象的属性(查看:C:\xampp\htdocs\Test_Laravel\resources\views \view_object.blade.php)" 显示braclets
表的迁移
你是说模特吗?【参考方案2】:
根据您的previous question
你必须从视图中传递user
,只有一个用户
public function view_brac( $BrackID )
$user = DB::table('tablename')->where('id',$BrackID)->first();
return view('view_object')->with('user',$user);
并显示用户详细信息,无需使用foreach
显示单个数据
<body>
<div class="content-products">
<div id="myDiv">
<div class="products">
<img src=" $user->Image" ><br>
$user->Title<br>
$user->Content<br>
$user->Price€<br>
</div>
</div>
</div>
</body>
更新 更新后
您已将值传递为Object
,将其更改为user
public function view_brac()
$user = \DB::table('braclets')->where('BrackID' , request('brackId'))->get();
return view('view_object', compact('user'));
并且一定要分开使用viewAll
blade 和singleView
blade。
【讨论】:
感谢您的帮助。我已经完成了您的更改,现在出现错误:“此集合实例上不存在属性 [图像]。(查看:C:\xampp\htdocs\Test_Laravel\resources\views\view_object.blade.php) " 您是否从Object
更改为 user
?正确检查变量名。
是的,我已经复制并粘贴了您分享的所有内容
这是您的用户模型/对象的问题。检查用户是否具有图像属性并且您的拼写是否一致。在刀片文件中,dd($user) 并验证“图像”属性是否存在。【参考方案3】:
public function view_brac()
$object['user'] = \DB::table('braclets')->where('BrackID' , request('brackId'))->get();
return view('view_object', compact('Object'));
试试这个代码
【讨论】:
然后我得到一个错误:未定义的变量:用户以上是关于如何在新页面中显示所选产品的主要内容,如果未能解决你的问题,请参考以下文章