首页 > 解决方案 > CodeIgniter 4:$this->post 调用失败

问题描述

我正在阅读 Lonnie Ezell 关于 CodeIgniter 4 的书,并且正忙于项目 4,处理单元测试。代码示例在这里:

我已经完全像这样实现了我的代码(复制和粘贴的代码),特别是测试中的函数testCanEditPost(),这是唯一失败的测试,并且savePostController.

首先,if (! $this->validate...调用总是失败 - 这是主要问题 - 我已经输出了验证错误,并且它一直说“需要 x 字段”,即使数据可用。如果我将$post = ($postID === null ? ...代码移到顶部,我可以看到我的title,bodypublish_at, 是从new Post($this->request->getPost(). 我知道这一点是因为再往下看,由于某种原因,$postId 始终保持为空(见下文),但这样做确实会显示字段(标题、正文和 publish_it),但 postId 为空:

$post = ($postId === null ? new Post($this->request->getPost()) : $this->posts->find($postId));
echo '<pre>';
print_r($postId);
print_r($post);
echo '</pre>';
exit(); // I am removing this debug text after testing, so the exit() here is not why it does not complete correctly.

其次,空$postId。所以 - 调用这个:

$response = $this->post("posts/{$post->id}", [
    'title' => 'Post A',
    'publish_at' => date('Y-m-d 00:00:00', strtotime('+1 week')),
    'body' => 'My Great Post'
]);

不传递$post->idPostController save函数的$postId参数。$post->id已填充,因此我没有将 null 传递给save函数。我的路线也是从示例中复制的:

$routes->post('posts/(:num)', 'PostController::save/$1');

有任何想法吗?

标签: codeigniter-4

解决方案


推荐阅读