你好我是cakephp的初学者我喜欢在管理员端添加一个输入字段add.ctp我从来没有使用但我知道这个mvc结构所以我试着复制并粘贴现有的输入字段'name'我刚复制相同的代码,只更改名称作为'sidename'它工作正常。我也在相应的表格上创建了一个名为“sidename”的数据库字段。
我不熟悉模型和控制器,我只需要了解事情
当我们在表单中添加新字段时,需要更新所有内容和文件(模型,视图,控制器)以保存数据
如果我想要更新意味着在这种情况下,我在我的代码中使用帮助类,那么我需要更新哪里
一旦存储数据库就意味着如何在ctp文件中检索它
现有代码(我需要在下面的代码中添加新的字段sidename ??)
enter code here <h3><?php echo __l('General'); ?></h3>
<?php
echo $this->Form->input('user_id', array('type' => 'hidden'));
echo $this->Form->input('clone_deal_id', array('type' => 'hidden'));
//echo $this->Form->input('name',array('label' => __l('Name')));
echo $this->Form->input('name', array('type'=>'text','class' => 'js-dealname-count {"display":"js-dealname","field":"js-dealname-count","count":"'.Configure::read('deal.dealname_count').'"}','label'=>__l('Name'), 'info' => __l('This is deal name shown in home page.') . ' ' . '<span class="character-info">' . __l('You have') . ' ' . '<span id="js-dealname-count"></span>' . ' ' . __l('characters left') . '</span>'));
echo $this->Form->input('sidename',array('label' => __l('SideName')));
//echo $this->Form->input('sidename', array('type'=>'text','class' => 'js-dealname-count {"display":"js-dealname","field":"js-dealname-count","count":"'.Configure::read('deal.dealname_count').'"}','label'=>__l('SideName'), 'info' => __l('This is deal name shown in side bar.') . ' ' . '<span class="character-info">' . __l('You have') . ' ' . '<span id="js-dealname-count"></span>' . ' ' . __l('characters left') . '</span>'));
echo $this->Form->input('DealCategory', array('type'=>'select', 'multiple'=>'checkbox','id'=>'DealCategory1', 'label' => __l('Category'),'info' =>'Choose Category'));
//echo $this->Form->input('deal_category_id', array('label' => __l('Category'),'empty' =>__l('Please Select')));
if($this->Auth->user('user_type_id') == ConstUserTypes::Admin || $this->Auth->user('user_type_id') == ConstUserTypes::Employee):
echo $this->Form->input('company_id', array('label' => __l('Merchant'),'empty' =>__l('Please Select')));
echo $this->Form->input('company_slug', array('type' => 'hidden'));
else:
echo $this->Form->input('company_id', array('type' => 'hidden'));
echo $this->Form->input('company_slug', array('type' => 'hidden'));
endif;
?>
答案 0 :(得分:0)
您应该在PHP / cakePHP中使用现代和更好的功能,例如compact()
。
//Here you can include many conditions to find data AND fields to select.
$variable_to_pass = $this->YourModel->find('all');
$this->set(compact('variable_to_pass'));
这可能看起来没有比上面设置的每个变量更好,但让我给你更大的图片。
$variable_to_pass1 = $this->YourModel->find('all');
$variable_to_pass2 = $this->YourModel->find('all');
$variable_to_pass3 = $this->YourModel->find('all');
$variable_to_pass3 = $this->YourModel->find('all');
$variable_to_pass4 = $this->YourModel->find('all');
$variable_to_pass5 = $this->YourModel->find('all');
$variable_to_pass6 = $this->YourModel->find('all');
$variable_to_pass7 = $this->YourModel->find('all');
$variable_to_pass8 = $this->YourModel->find('all');
$variable_to_pass9 = $this->YourModel->find('all');
您的OLD年龄方法:
$this->set ('variable_to_pass1', $variable_to_pass9);
$this->set ('variable_to_pass2', $variable_to_pass9);
$this->set ('variable_to_pass3', $variable_to_pass9);
$this->set ('variable_to_pass4', $variable_to_pass9);
$this->set ('variable_to_pass5', $variable_to_pass9);
$this->set ('variable_to_pass6', $variable_to_pass9);
$this->set ('variable_to_pass7', $variable_to_pass9);
$this->set ('variable_to_pass8', $variable_to_pass9);
$this->set ('variable_to_pass9', $variable_to_pass10);
现代方法(减少头痛:)和更少的代码行。)
$this->set(compact('variable_to_pass1','variable_to_pass2','variable_to_pass3','variable_to_pass4','variable_to_pass5','variable_to_pass6','variable_to_pass7','variable_to_pass8','variable_to_pass9'));
在 View
中,您可以像这样使用它,就像在控制器中设置变量一样使用
echo $variable_to_pass1;
如果它在数组中你在foreach的$ variable_to_pass1中获得的内容。
答案 1 :(得分:0)
我认为您的问题与此问题相同cakephp new field not saving
您需要通知cakephp您的数据库中有新字段。
答案 2 :(得分:-1)
您好,欢迎来到cakephp的精彩世界。
因此,如果您向公司添加字段并在数据库中添加字段,则基本完成。 Cakephp为您做了其他一切。我猜你的模型和你正在使用此信息的页面,但它将使用与其余表单数据相同的约定显示。
在使用
的控制器中$general = $this->General-> find ('all');
然后使用数据库中的所有行。
$this->set ('general', $general);
这将在视图中设置一个名为general的变量。
从视图中你可以
Foreach ($general as $key => $value){
$sirname = $value['General']['sirname'];
}
希望这会有所帮助。很抱歉我手机上的格式浪费了一些时间。如果您发布更多代码,我们肯定可以提供更多帮助,甚至可以编写您需要的代码。特别是你的控制器和视图。