如何在新页面中显示所选产品

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'));

并且一定要分开使用viewAllblade 和singleViewblade。

【讨论】:

感谢您的帮助。我已经完成了您的更改,现在出现错误:“此集合实例上不存在属性 [图像]。(查看: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'));
  

试试这个代码

【讨论】:

然后我得到一个错误:未定义的变量:用户

以上是关于如何在新页面中显示所选产品的主要内容,如果未能解决你的问题,请参考以下文章

如何在新页面中显示 django 搜索结果

闪亮的数据表:在新窗口中弹出有关所选行的数据

保存后如何显示所选选项

如何在新选项卡中打开新创建的图像?

如何根据登录成功在新窗口/选项卡或同一窗口/选项卡中打开页面?

在WooCommerce中取代可变产品定价