【问题标题】:Codeigniter 4 How to call a controller method in a view?Codeigniter 4 如何在视图中调用控制器方法?
【发布时间】:2022-01-20 04:22:46
【问题描述】:

我在 BaseController 中有一个名为 pr 的函数。我可以在我的控制器中访问此功能,但我也想在视图中使用此功能。有办法吗?

编辑: 这就是我尝试在视图中使用 pr 的方式。

 <div class="col-md-9">
<?php

$this->pr("11", 22);

我的公关功能是;

 public function pr($array, $die = "", $type = "")
    {
        ini_set("xdebug.var_display_max_children", '-1');
        ini_set("xdebug.var_display_max_data", '-1');
        ini_set("xdebug.var_display_max_depth", '-1');

        echo "<pre>";
        if (!$type) print_r($array);
        else var_dump($array);
        echo "</pre>";
        if ($die) die();
    }

【问题讨论】:

  • 请不要标记照片或截图,也不要复制粘贴整体代码。
  • pr 是您的 \App\Controller\Home 类中的一个方法。所以应该是\App\Controller\Home::pr()。相反,你打电话给CodeIgniter\View\View::pr()。但是,您在视图中调用了 pr (您没有显示视图代码),但您做得不对。请多展示pr方法代码和你的看法。
  • @KoalaYeung 添加了我的观点和公关代码

标签: php function codeigniter-4


【解决方案1】:

你打错了pr

  1. pr 是您的 \App\Controller\Home 类中的一个方法。所以它应该是\App\Controller\Home::pr()。相反,您调用的是 \CodeIgniter\View\View::pr()。

  2. 视图可能会渲染到一些 \CodeIgniter\View\View 类实例中,因此在视图中调用 $this 会导致调用 \CodeIgniter\View\View::pr()。这就是为什么$this-&gt;pr() 呼叫没有按预期工作的原因。

  3. 你的Home::pr()是一个普通方法,只能在实例内部调用(即通过$this在实例内部调用)。您的视图无权访问它。

  4. 您的pr 似乎没有针对Controller 实例做任何特定的事情(即没有在内部使用$this),您可以简单地将其重写为公共静态方法,可以在您的视图中轻松调用。

所以,这可能对你有用。

控制器:

namespace App\Controllers;

...

class Home {

    ...

    public static function pr($array, $die = "", $type = "")
    {
        ini_set("xdebug.var_display_max_children", '-1');
        ini_set("xdebug.var_display_max_data", '-1');
        ini_set("xdebug.var_display_max_depth", '-1');

        echo "<pre>";
        if (!$type) print_r($array);
        else var_dump($array);
        echo "</pre>";
        if ($die) die();
    }

    ...

}

查看:

 <div class="col-md-9">
 <?php \App\Controllers\Home::pr("11", 22); ?>

【讨论】:

    猜你喜欢
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多