我是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'是未定义的索引”。但是,如果我在href ...
中删除该代码,则它所在的foreach循环可以很好地执行我尝试了将php插入href,使用addEventListener进行ajax调用等似乎无数种排列方式,等等……我很困惑。感谢您的帮助。
答案 0 :(得分:0)
您正在将一个数组发送到名为$properties
的视图。您已指示控制器向$properties
分配您已分配给另一个名为$data
的变量的值:
// 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
)具有一个索引,称为“ title”。它没有名为“ name”的索引,因此为什么会收到没有名为name的索引的错误。它将通过foreach循环,因为存在一个带有'title'的$properties
变量,所以它将成功。只是没有索引“名称”。
您的代码与标准Laravel约定略有出入,这使很多此类工作变得容易。建议您仔细研究Laravel如何对待控制器(类似于Laracasts之类的教程),以帮助您更轻松地发现这些类型的问题:)