在视图中访问$this->请求,而不必将其传递到视图Codeigniter 4中

xqk2d5yq  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(115)

是否有一种方法可以访问视图中的incomingRequest类,而不必在数据数组中传递它。
例如,我最初是这样做的:

public function location()
  {
    $request = \Config\Services::request()->getUri();

    $data['uri'] = $this->request->uri;

    return view('/path/to/view', $data);
  }

但是,有没有一种好方法可以直接在视图中访问$this-〉request,而不必将其传递到视图中
我想做这样的事情:

<?php
    $colorClass = $this->request->uri->getSegment(1) == 'workflow' ? 'bg-warning' : '';
?>

<nav class="<?= $colorClass ?>" >
<!-- rest of code here -->
</nav>

而不必将请求直接传递给$data数组。

yhived7q

yhived7q1#

您可以创建自己的helper函数来返回段值。

if (!function_exists('getSegment')) {

    function getSegment(int $number)
    {
        $request = \Config\Services::request();

        if ($request->uri->getTotalSegments() >= $number && $request->uri->getSegment($number)) {
            return $request->uri->getSegment($number);
        } else {
            return false;
        }
    }
}

参考链接:https://forum.codeigniter.com/showthread.php?tid=74755&pid=371243#pid371243

相关问题