codeigniter 如何成功地将数据从Controller传递到View?

1l5u6lss  于 2022-12-16  发布在  其他
关注(0)|答案(2)|浏览(152)

我已经为一个PHP(CodeIgniter 4)Web应用程序建模并测试了一个数据库。我在我的(products)Model中创建了一个从DB中检索数据的函数,并在控制器中调用了该函数。

getBasicInfo(int $id): array
    {
        $db = $this->connectToDB();

        $query = $db->query('SELECT productName, productDescription, productType FROM konnektrix_db.products WHERE productID = $id LIMIT 1');
        $row = $query->getRow();
        return
            [   $row->productName,
                $row->productDescription,
                $row->productType
            ];
    }
}
class Home extends BaseController
{
    public function index()
    {
        $ProductModel = new Products();
        $data = $ProductModel->getBasicInfo(1);
        //$data['name'] = 'Yuna';

        return view('testing_view',$data);
    }
}

我想要的是能够从我的视图(testing_view)访问该数据($data),但当我这样做时,它无法识别变量。(请参阅图片了解错误)

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Data testing view</title>
</head>
<body>

<h2>General product overview page</h2>

<h1><? $data; ?></h1>

</body>

你知道我做错了什么吗?
我已经看了多个来源关于如何将数据从控制器传递到视图在CI 4中,这是他们所做的,除非我错过了什么?
View error

ifsvaxew

ifsvaxew1#

根据文档,您应该使用escape函数调用该变量。
请尝试:
从getBasicInfo函数向数组添加字符串标识符。

getBasicInfo(int $id): array
        {
            $db = $this->connectToDB();
    
            $query = $db->query('SELECT productName, productDescription, productType FROM konnektrix_db.products WHERE productID = $id LIMIT 1');
            $row = $query->getRow();
            return
                [   "name" => $row->productName,
                    "description" => $row->productDescription,
                    "type" => $row->productType
                ];
        }

然后你会看到这样的东西:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Data testing view</title>
</head>
<body>

<h2>General product overview page</h2>

<h1><? esc($name); ?></h1>
<h1><? esc($description); ?></h1>
<h1><? esc($type); ?></h1>

</body>

envsm3lx

envsm3lx2#

当你把一个数组传递给一个视图的时候,这个数组被“分解”了,所以$data['name']变成了$name
所以只需要搜索以数组键为名称的变量。

相关问题