Codeigniter 4 如何在视图中调用控制器方法?
Codeigniter 4 How to call a controller method in a view?
我在 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
错了:
pr
是您 \App\Controller\Home class 中的一个方法。所以应该是\App\Controller\Home::pr()。相反,您调用的是 \CodeIgniter\View\View::pr().
视图可能会呈现到某些 \CodeIgniter\View\View class 实例中,因此在视图中调用 $this
会导致调用 \CodeIgniter\View\View::pr()
。这就是 $this->pr()
调用未按预期工作的原因。
你的Home::pr()
是普通方法,只能在实例内部调用(即通过$this
在实例内部调用)。您的视图无权访问它。
看来你的 pr
没有做任何特定于 Controller 实例的事情(即没有在里面使用 $this
),你可以简单地将它重写为 public 静态方法,可以在你的视图中轻松调用。
所以,这可能对你有用。
控制器:
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); ?>
我在 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
错了:
pr
是您 \App\Controller\Home class 中的一个方法。所以应该是\App\Controller\Home::pr()。相反,您调用的是 \CodeIgniter\View\View::pr().视图可能会呈现到某些 \CodeIgniter\View\View class 实例中,因此在视图中调用
$this
会导致调用\CodeIgniter\View\View::pr()
。这就是$this->pr()
调用未按预期工作的原因。你的
Home::pr()
是普通方法,只能在实例内部调用(即通过$this
在实例内部调用)。您的视图无权访问它。看来你的
pr
没有做任何特定于 Controller 实例的事情(即没有在里面使用$this
),你可以简单地将它重写为 public 静态方法,可以在你的视图中轻松调用。
所以,这可能对你有用。
控制器:
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); ?>