私は初めてcakephpで働いています。画像変数を持つProductモデルを使い始めることができました。画像をアップロードすることはできますが、その後製品に保存することができません。これは私のadd.ctpです
<div class="products form">
<?php echo $this->Form->create('Product', array('enctype' => 'multipart/form-data')); ?>
<fieldset>
<legend><?php echo __('Add Product'); ?></legend>
<?php
echo $this->Form->input('name');
echo $this->Form->input('slug');
echo $this->Form->input('description');
echo $this->Form->input('price');
echo $this->Form->input('weight');
//upload image
echo $this->Form->input('Product.image', array('type'=>'file', 'tmp_name'=>'temp'));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>
<div class="actions">
<h3><?php echo __('Actions'); ?></h3>
<ul>
<li><?php echo $this->Html->link(__('List Products'), array('action' => 'index')); ?></li>
</ul>
</div>
そしてこれが私のProductsControlleradd()関数です
public function add($seller_id = null) {
if ($this->request->is('post')) {
$this->Product->create();
debug($this->request->data);
if(isset($this->request->data["Product"]["image"]["name"]))
{
$file = new File($this->request->data["Product"]["image"]["name"]);
debug($this->request->data);
$ext = pathinfo(($this->request->data["Product"]["image"]["name"]), PATHINFO_EXTENSION);
if ($ext != 'jpg' && $ext != 'jpeg' && $ext != 'gif' && $ext != 'png')
{
$this->Session->setFlash('You may only upload image files.');
}else
{
if(move_uploaded_file($this->request->data["Product"]["image"]["tmp_name"],WWW_ROOT."/img/uploads/" . $this->data["Product"]["image"]["name"]) == true)
{
$this->data["Product"]["image"] = $this->data["Image"]["image"]["name"];
}
}
if ($this->Product->save($this->request->data)) //error here
{
$this->Session->setFlash(__('The product has been saved'));
$this->redirect(array('action' => 'index'));
$this->request->data['Product']['seller_id'] = $seller_id;
}
else {
$this->Session->setFlash(__('The product could not be saved. Please, try again.'));
}
}$this->Session->setFlash(__('The image could not be saved. Please, try again.'));
}
}
画像をアップロードして移動するのに製品を保存しない理由を誰かが理解できますか?また、これがdebug($ this-> request-> data);から生成されるものです。
array(
'Product' => array(
'name' => '8',
'slug' => '8',
'description' => '8',
'price' => '8',
'weight' => '8',
'image' => array(
'name' => 'celeb16.com-purple-strapless-short-bridesmaid-dress-g129-33(1).jpg',
'type' => 'image/jpeg',
'tmp_name' => 'C:\xampp\tmp\phpDD08.tmp',
'error' => (int) 0,
'size' => (int) 1404
)
)
)
役立つかもしれないもう1つの情報は、このコードを使用するときに次のことです。
<?php echo $this->Form->create('Product', array('enctype' => 'multipart/form-data')); ?>
画像を正しくアップロードすることはできますが、製品を保存することはできません。このコードを使用すると、次のようになります。
<?php echo $this->Form->create('Product'); ?>
製品は保存されますが、画像はアップロードされません