我最近继承了一些CakePHP代码,正在努力将其容纳到docker中。我不是那么流利的CakePHP。一切都成功了,除了错误的页面给我错误:
Call to undefined function App\Model\Table\_()
堆栈跟踪将我引导到一个蛋糕模板文件,该文件输出一个表单和一些输入。某些输入会引发错误。如果我添加' required' => false错误消除的选项。但我试图不编辑代码,因为它在开发服务器上完美运行。我也复制了app.php。
错误代码:
echo $this->Form->input('password', ['value'=>'']);
有效的代码:
echo $this->Form->input('password', ['value'=>'', 'required' => false]);
开发服务器: PHP - 7.0.22 CakePHP - 3.3.6
本地Docker容器: PHP - 7.1.5 CakePHP - 3.3.6
还有另一个错误以及主要错误表明:
Could this be caused by using Auto-Tables?
Please try correcting the issue for the following table aliases:
ArosAcos
这可能是我没有将dev数据库中的所有内容复制到本地数据库的问题吗?
堆栈追踪:
⟩ App\Model\Table\UsersTable->validationDefault
CORE/src/Validation/ValidatorAwareTrait.php, line 108
⟩ Cake\ORM\Table->validator
CORE/src/View/Form/EntityContext.php, line 463
⟩ Cake\View\Form\EntityContext->_getValidator
CORE/src/View/Form/EntityContext.php, line 406
⟩ Cake\View\Form\EntityContext->isRequired
CORE/src/View/Helper/FormHelper.php, line 2508
⟩ Cake\View\Helper\FormHelper->_initInputField
CORE/src/View/Helper/FormHelper.php, line 1610
⟩ Cake\View\Helper\FormHelper->file
APP/Template/Users/edit_profile.ctp, line 15
编辑个人资料代码:
<div class="displaysection">
<?= $this->Form->create($user); ?>
<?php
echo $this->Form->input('old_password', ['type' => 'password', 'required' => true]);
echo $this->Form->input('password', ['value'=>'']);
echo $this->Form->input('password_confirm', ['type' => 'password', 'required' => true]);
?>
<?= $this->Form->button('Change Password') ?>
<?= $this->Form->end() ?>
</div>
我在提交表单时也遇到此错误。我想这可能会出现在很多地方。
我将其追踪到CakePHP中的文件。
CORE/src/Validation/ValidatorAwareTrait.php, line 116
$validator = $this->{'validation' . ucfirst($name)}($validator);
显然这是导致错误的行。我不知道为什么这对开发和生产服务器起作用,而不是我本地的docker容器。
对此有任何帮助将不胜感激。谢谢!