Codeigniter 4 如何在视图中调用控制器方法?

Posted

技术标签:

【中文标题】Codeigniter 4 如何在视图中调用控制器方法?【英文标题】:Codeigniter 4 How to call a controller method in a view? 【发布时间】: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 添加了我的观点和公关代码 【参考方案1】:

你打错了pr

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

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

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

    您的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); ?>

【讨论】:

以上是关于Codeigniter 4 如何在视图中调用控制器方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CodeIgniter 将视图打开到视图中

在 codeigniter PATH 中调用控制器模型和视图

在codeigniter中没有从视图中调用控制器

在 ajax 调用后加载视图,CodeIgniter

在 codeigniter 中使用 AJAX 从视图调用控制器函数并从 db 检索行

如何从 CodeIgniter 中的视图访问模型