首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调用laravel View内部的方法?

如何调用laravel View内部的方法?
EN

Stack Overflow用户
提问于 2017-03-16 13:53:36
回答 6查看 617关注 0票数 0

我有一个控制器,它将加载视图部分

代码语言:javascript
复制
public function homePage(){
    $categories = Category::all();
    $products = Product::all();
    return view('cart.index',compact('categories','products'));
}

这是视图(基本上是检查子类别,如果有则会显示跳过)

代码语言:javascript
复制
<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>
            @if({{StapsController::checkSubcategory($row->id)}})
                @foreach($subcategories as $sub)
                    <ul>                                        
                        <li><a href="#"><span class="size-11 text-muted pull-right">(123)</span> {{$sub->s_name}}</a></li>          
                    </ul>
                @endforeach 
            @else
                <li class="list-group-item"><a href="#"><span class="size-11 text-muted pull-right">(189)</span> {{$row->name}}</a></li>
            @endif
        @endforeach

    </li>
</ul>   

下面是checkSubcategory方法

代码语言:javascript
复制
public function checkSubcategory($id){
    $category = Category::find($id);
    $id = $category->id;
    $subcategories = DB::table ('subcategories')
        ->join('categories_subcategories','subcategories.id','=','categories_subcategories.subcategory_id')
        ->join('categories','categories_subcategories.category_id','=','categories.id')
        ->where('categories.id','=',$id)
        ->select('subcategories.name as s_name ')
        ->get(); 

    return $subcategories;
}

但是我在View中调用方法时出现了语法错误?在视图部件中调用..is方法有任何错误,这可能是什么错误?

EN

回答 6

Stack Overflow用户

发布于 2017-03-16 14:08:04

如果checkSubcategory的逻辑在控制器本身中运行良好,则必须将其传输到模型。也就是说,让它成为模型的方法,这样从视图中你就可以做如下的事情:

代码语言:javascript
复制
....
<a class="dropdown-toggle" href="#">{{$row->name}}</a>
                                        @if({{$row->checkSubcategory($row->id);}})
                                        <ul>
....

换句话说,在您的Category模型中定义此方法。

票数 0
EN

Stack Overflow用户

发布于 2017-03-16 14:09:01

把你的函数放在其他地方,而不是控制器。在您的例子中,也许是在Category模型中?

然后,在View中,你可以像这样使用你的函数:

代码语言:javascript
复制
$row->checkSubcategory($row->id)

不需要使函数成为静态函数。

票数 0
EN

Stack Overflow用户

发布于 2017-03-16 14:12:42

像这样使用关系,并通过对象调用。

代码语言:javascript
复制
public function checkSubcategory()
{
    return $this->hasMany('App\subcategories');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42826278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档