0

ユーザーを追加する関数を1つ作成しました。パラメータは、ユーザー名、メール、パスワード、プロフィール画像です。

<form name="User" method="post" action="http://192.168.1.100/filmtastic/api/users/adduser" 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" /></td></tr></table>
</form>

今私の中でUserController私は持っています:

public function api_adduser() {

$this->layout = false;
$this->request->data['User']= $this->request->data;
if($this->request->data['User'] != array()) {
    pr($this->request->data); die();
    }
 }

ここで私はそのHTMLフォームによって渡されるデータをデバッグし、optputは次のようになります

Array
(
    [username] => jack roy
    [password] => jack
    [email] => jack@yahoo.com
    [submit] => Submit
    [User] => Array
        (
            [username] => jack roy
            [password] => jack
            [email] => jack@yahoo.com
            [submit] => Submit
        )

)

問題は、画像配列が表示されないことです。次のような画像配列を取得する方法を教えてください

Array
(
    [image] => Array
        (
            [name] => 06_01_2009_0692878001231258160_nanzig.jpg
            [type] => image/jpeg
            [tmp_name] => C:\wamp\tmp\php368F.tmp
            [error] => 0
            [size] => 81167
        )

)
4

1 に答える 1

0

フォームの MIME タイプを に設定し忘れただけかもしれませんmultipart/form-data。これが私のデモビューです。add.ctp

<?php
echo $this->Form->create('User', array('enctype' => 'multipart/form-data'));

echo $this->Form->input('name');
echo $this->Form->password('password');
echo $this->Form->input('email');
echo $this->Form->file('image');
echo $this->Form->submit();

echo $this->Form->end();

こちらがUserController

class UserController extends AppController {

    public $helpers = array('Html', 'Form');

    public function add() {
        pr($this->request->data);
    }

}

フォームを送信したときの結果は次のようになります

Array
(
    [User] => Array
        (
            [name] => admin
            [password] => admin
            [email] => asdf@qwerty.com
            [image] => Array
                (
                    [name] => cakephp-book.odt
                    [type] => application/vnd.oasis.opendocument.text
                    [tmp_name] => /tmp/phpKniokr
                    [error] => 0
                    [size] => 170247
                )

        )

)

外部ページで使用する可能性のある、生成された HTML のダンプを次に示します (理由をお尋ねしてもよろしいですか??? )。追加されるものがいくつあるかに注意してくださいFormHelper...アプリケーションがまだサーバーに直接アクセスしているのに、なぜ外部ビューを構築するのだろうか...

  <form action="/test/cakedemo/user/add" enctype="multipart/form-data" id="UserAddForm"
  method="post" accept-charset="utf-8">
    <div style="display:none;">
      <input type="hidden" name="_method" value="POST" />
    </div>

    <div class="input text">
      <label for="UserName">Name</label><input name="data[User][name]" 
        id="UserName" />
    </div><input name="data[User][password]" type="password" id="UserPassword" />

    <div class="input text">
      <label for="UserEmail">Email</label><input name="data[User][email]" type="text"
      id="UserEmail" />
    </div><input type="file" name="data[User][image]" id="UserImage" />

    <div class="submit">
      <input type="submit" value="Submit" />
    </div>
  </form>
于 2012-09-24T09:49:57.090 に答える