Php 如何在laravel视图中调用方法?
我有一个控制器,它将加载视图部分Php 如何在laravel视图中调用方法?,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有一个控制器,它将加载视图部分 public function homePage(){ $categories = Category::all(); $products = Product::all(); return view('cart.index',compact('categories','products')); } 这是视图(基本上是检查子类别,如果在那里它将显示,否则跳过) 但我在视图中调用方法的行中出现语法错误? 可能是什么错误..调用view par
public function homePage(){
$categories = Category::all();
$products = Product::all();
return view('cart.index',compact('categories','products'));
}
这是视图(基本上是检查子类别,如果在那里它将显示,否则跳过)
但我在视图中调用方法的行中出现语法错误?
可能是什么错误..调用view part中的方法有错误吗?如果控制器本身的
checkSubcategory
逻辑工作正常,则必须将其传输到模型。i、 e使其成为模型的方法,以便从视图中可以执行以下操作:
....
<a class="dropdown-toggle" href="#">{{$row->name}}</a>
@if({{$row->checkSubcategory($row->id);}})
<ul>
....
。。。。
@if({{$row->checkSubcategory($row->id);}})
....
换句话说,在您的
类别
模型中定义此方法。将您的函数放在其他位置,而不是控制器。在您的情况下,可能是在类别
模型内部
然后,在视图中,您可以像这样使用您的函数:
$row->checkSubcategory($row->id)
无需将函数设为静态。使用这样的关系并通过对象调用
public function checkSubcategory()
{
return $this->hasMany('App\subcategories');
}
有一种方法可以轻松做到这一点-
- 在app/Http目录中,创建一个helpers.php文件并添加 你的功能
- 在composer.json中的自动加载块中,添加
“文件”:[“app/Http/helpers.php”]
- 运行composer转储自动加载
**注意:请记住,在helpers.php文件中,所有代码都需要基于函数。不要在此文件中使用类 在视图中调用方法不是一个好的做法。在这种情况下,可以创建一个帮助文件并使用composer加载该文件,也可以使用查询范围。试试看。使用查询范围 首先将其添加到类别模型中
function scopeCheckSubcategory(){
DB::raw('(SELECT subcategories.name as s_name
FROM `subcategories`
INNER JOIN categories_subcategories on categories_subcategories.subcategory_id = subcategories.id
AND categories_subcategories.category_id = categories.id') AS s_name'
)
}
现在调用范围
$categories = Category::CheckSubcategory->get();
现在检查你的刀片文件
@if($row->s_name)
...
...
@endif
你的刀片有几个问题,这里是修正版
<ul class="list-group list-group-bordered list-group-noicon uppercase">
<li class="list-group-item active">
@foreach($categories as $row)
<a class="dropdown-toggle" href="#">{{$row->name}}</a>
<ul>
@if(StapsController::checkSubcategory($row->id))
<li>
<a href="#">
<span class="size-11 text-muted pull-right">(123)</span> {{$sub->s_name}}
</a>
</li>
@else
<li class="list-group-item">
<a href="#">
<span class="size-11 text-muted pull-right">(189)</span> {{$row->name}}
</a>
</li>
@endif
</ul>
@endforeach
</li>
</ul>
-
@foreach($类别为$行)
@if(StapsController::checkSubcategory($row->id))
-
@否则
-
@恩迪夫
@endforeach
@if({{StapsController::checkSubcategory($row->id);}})
此行错误(语法错误)endforeach
语句if语句
在endforeach
语句之后关闭else语句中有缺少ul
标记
查看上面的内容,我希望这能有所帮助。57秒前。如何调用
$row->checkSubcategory()
function?@HIteshTank在模型中定义它作为类的方法。我仍然得到相同的错误。尽管我将它放在模型中。按您的方式调用方法instructed@User57您还必须注意代码中的那一行:@if({{StapsController::checkSubcategory($row->id);}}})
删除代码>在.id);}代码>在何处调用作用域?以及您的查询。这样分类::CheckSubcategory->get();请阅读这篇文章,然后你将如何使用{{$sub->s_name}
你是否还缺少一个foreach循环@如果(StapsController::checkSubcategory($row->id))我认为这一行是@foreach(StapsController::checkSubcategory($row->id)),并且$sub是这个foreach循环的实例,请纠正我,如果我错了,请纠正我,您的代码只有一个foreach循环,您能编辑问题并纠正丢失的foreach循环的位置吗,我忘了添加行,但是调用该方法后如何打印数据?将@if(StapsController::checkSubcategory($row->id))更改为@foreach(StapsController::checkSubcategory($row->id)作为$sub),并检查StapsController::checkSubcategory($id)
不是静态函数,因此不能这样调用它。
@if($row->s_name)
...
...
@endif
<ul class="list-group list-group-bordered list-group-noicon uppercase">
<li class="list-group-item active">
@foreach($categories as $row)
<a class="dropdown-toggle" href="#">{{$row->name}}</a>
<ul>
@if(StapsController::checkSubcategory($row->id))
<li>
<a href="#">
<span class="size-11 text-muted pull-right">(123)</span> {{$sub->s_name}}
</a>
</li>
@else
<li class="list-group-item">
<a href="#">
<span class="size-11 text-muted pull-right">(189)</span> {{$row->name}}
</a>
</li>
@endif
</ul>
@endforeach
</li>
</ul>