codeigniter-4 - CodeIgniter 4:$this->post 调用失败
问题描述
我正在阅读 Lonnie Ezell 关于 CodeIgniter 4 的书,并且正忙于项目 4,处理单元测试。代码示例在这里:
- https://github.com/lonnieezell/ci4-foundations/blob/master/project-04-part-ii/app/Controllers/PostController.php
- https://github.com/lonnieezell/ci4-foundations/blob/master/project-04-part-ii/tests/PostCrudTest.php
我已经完全像这样实现了我的代码(复制和粘贴的代码),特别是测试中的函数testCanEditPost()
,这是唯一失败的测试,并且save
在PostController
.
首先,if (! $this->validate...
调用总是失败 - 这是主要问题 - 我已经输出了验证错误,并且它一直说“需要 x 字段”,即使数据可用。如果我将$post = ($postID === null ? ...
代码移到顶部,我可以看到我的title
,body
和publish_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->id
到PostController
save
函数的$postId
参数。$post->id
已填充,因此我没有将 null 传递给save
函数。我的路线也是从示例中复制的:
$routes->post('posts/(:num)', 'PostController::save/$1');
有任何想法吗?
解决方案
推荐阅读
- javascript - React Native:从对象数组中传递特定对象作为道具
- javascript - ًstepNumber 变量如何设置为比 history.length 低的值?(丹·阿布拉莫夫的井字游戏)
- windows - unity windowed mode size 在不同的屏幕分辨率上是不同的
- typescript - 将铯与 TypeScript 一起使用?
- python - 用于跨蓝图共享资源的 Flask 配置
- apache-spark - 使用没有 partitionBy 的重新分区的 Spark parquet 文件数
- reactjs - React Native MapBox 获取点击位置
- mysql - Mysql:获取今天日期的记录
- python - 我如何将(-0.143704570332567-1.2618680524722614j)转换为 sklearn fit 方法可以使用的东西?
- javascript - 带有样式组件的提取样式的循环依赖