[英]Cakephp 2.0 form helper issue
我是CakePHP 2.0的新手。 它与以前的版本相比有太多变化。 我在CakePHP 2.0中实现基本功能时遇到很多问题。 我在CakePHP 1.3和2.0中做了相同的代码,但输出不同,所以它给我带来了问题。
我创建了一个表单,如下所示:
<form name="User" method="post" action="http://192.168.1.24/project/api/documents/sub" ENCTYPE="multipart/form-data">
<table>
<tr><td><label>username:</label></td><td><input type="text" name="username"></td></tr>
<tr><td><label>password:</label></td><td><input type="text" name="password"></td></tr>
<tr><td><label>email:</label></td><td><input type="text" name="email"></td></tr>
<tr><td><label>Image:</label></td><td><input type="file" name="image"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="Submit" />
我在CakePHP 1.3和2.0中使用了这个表单。 CakePHP 1.3的控制器代码是:
function api_sub()
{
$this->layout = false;
$this->data['Document'] = $this->params['form'];
pr($this->data); die();
}
上面代码的输出是:
Array
(
[Document] => Array
(
[username] => mack
[password] => meack
[email] => mack@gmail.com
[submit] => Submit
[image] => Array
(
[name] => 01manta.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp\tmp\phpF586.tmp
[error] => 0
[size] => 636306
)
)
)
CakePHP 2.0中的控制器代码如下所示:
public function api_sub()
{
//$this->layout = false;
$this->request->data['Document']= $this->request->data;
pr($this->request->data); die();
}
上面代码的输出如下所示:
Array
(
[username] => mack
[password] => meack
[email] => mack@gmail.com
[submit] => Submit
[User] => Array
(
[username] => mack
[password] => meack
[email] => mack@gmail.com
[submit] => Submit
)
)
现在问题是在CakePHP 2.0中,输出中缺少图像数组。 谁能告诉我如何在CakePHP 2.0中获得该图像数组? 我的编码需要做哪些更改?
我可能是因为你没有使用FormHelper 。 如果您使用所述帮助程序,数据可能会在$this->data
或$this->request->data
正确填充。 虽然我在文档上找不到任何确定的内容。
在任何情况下,通用表单数据总是出现在$this->request->params['form']
,因此$this->request->params['form']
的文件数据将在$this->request->params['form']['file']
。
您应该执行以下操作,而不是为表单编写HTML代码:
echo $this->Form->create('ModelName');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->input('email');
echo $this->Form->input('image');
echo $this->Form->end('Submit!');
请注意,在此示例中,您将使用模型验证图像,并且可能会将其存储在数据库中。 如果您希望不将图像存储在数据库中,您可以将最后一个输入替换为:
echo $this->Form->input('image', array('type' => 'file'));
所有这些都可以在您的控制器中通过以下方式访问
$this->request->data
这将是一个如下所示的数组:
array(
'ModelName' => array(
'username' => 'whatever_the_user_wrote',
'password'=> '********',
'email' => 'foo@bar.baz',
'image' => the image
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.