【问题标题】:Propagating a dynamic dynamic link in laravel foreach loop在 laravel foreach 循环中传播动态动态链接
【发布时间】:2019-11-23 02:26:36
【问题描述】:

我是 laravel 和 php 的新手。

鉴于下面的代码,我希望用户在单击列表中的属性后导航到特定于属性的详细信息。

我正在尝试通过将用户发送到“属性详细信息”模板来动态显示特定属性信息,因此我没有为每个属性设置单独的页面。

我很尴尬地说我花了多少时间试图弄清楚这一点。

//WebController.php
function properties(Request $request) //for the property list page
    {
            $data = array (
          'title' => "Our Properties"
        );
            return view('p',["properties" => $this->data()])->with($data);
    }

function sub_prop($id) //for the property details template page
    {
       $data = array (
        'title' => $id
       );
        return view('properties.template', ['properties' => $this->data()])->with($data);
    }


//web.php
Route::get('properties/{id}', 'WebController@sub_prop');


//Fake database
    function data(){
        return array(
            array(
                'name' => "Carpenter",
                'address' => array(
                    'name' => "address", //I realize this is redundant
                    'street' => "address",
                    'city' => "city",
                    'zip' => "zip"
                )
            ),
            array(
                'name' => "Berkman",
      ...etc

//property_list_page.blade.php
  <div id="property-grid-2" class="container-grid ">

       @foreach($properties as $property)

              <div class="card-container">
                <h3 class="a " id="propName">

                @if(isset($property['name']))

                  <b>{{ $property['name'] }}</b></h3>

                @else

                  <b>Dream Home</b></h3>

                @endif

                <div class="card">
                <a id="propLinker" href="property/{{$property['name']}} ">     
//the above href is for the dynamic link

插入到 href 中的 php 回退了“'name' is an undefined index.”的错误。但是如果我删除href中的代码,它所在的foreach循环执行得很好......

我已经尝试了无数种将 php 插入到 href、使用 addEventListener 的 ajax 调用等等的排列方式……我很难过。感谢您的帮助。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您正在向名为$properties 的视图发送一个数组。您已指示控制器将您分配给另一个名为 $data 的变量的值分配给 $properties

    // This tells the controller to send the var $properties with the stuff inside $data to a view called 'p'
    return view('p',["properties" => $this->data()])->with($data); 
    

    您已经在属性方法中定义了$data 数组,如下所示:

     $data = array (
          'title' => "Our Properties"
      );
    

    这个数组(将变为$properties)有一个索引,称为“标题”。它没有名为“name”的索引,因此您收到没有名为 name 的索引的错误。它将通过 foreach 循环,因为有一个带有“title”的$properties 变量,所以它会成功。只是没有索引“名称”。

    您的代码与标准的 Laravel 约定稍有不同,这使得很多事情变得更容易。建议您深入了解 Laravel 如何处理控制器(Laracasts 之类的教程很棒),以帮助您更轻松地发现这些类型的问题 :)

    【讨论】:

    • 感谢您抽出宝贵时间回答!您的解释促使我继续挖掘。
    • 很高兴它指出了您问题中的错误。如果您觉得有帮助,请标记为正确。
    猜你喜欢
    • 2022-12-20
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多