Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel视图中调用方法?_Php_Laravel_Laravel 5 - Fatal编程技术网

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文件中编写什么,都可以轻松访问


    **注意:请记住,在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>