さて、基本的にユーザーを管理するCakePHP 2.2.5アプリがあり、ユーザーには写真があり、PhotosControllerを作成します(このチュートリアルの提案として)。私はそれをテストし、Photos/View
リダイレクトせずに写真をフォームで送信できるようにする ajax 要素を含め、 で完全に動作します。そして今、私はこれらすべてを接続しようとしていますが、思ったほど簡単ではありません。
私の写真の追加方法:
public function add()
{
if ( $this->request->is( 'post' ) ) {
$this->Photo->create();
$json = array( 'result' => array( 'files' => array() ) );
if ( $this->Photo->save( $this->request->data ) ) {
$photo = $this->Photo->findById( $this->Photo->id );
$json['files'][0]['name'] = $photo['Photo']['basename'];
$json['files'][0]['size'] = $this->request->data['Photo']['file']['size'];
$json['files'][0]['url'] = $this->webroot . 'media/transfer/img/' . $photo['Photo']['basename'];
$json['files'][0]['thumbnail_url'] = $this->webroot . 'media/filter/thumbnail/img/' . $photo['Photo']['basename'];
}
else {
$json = 'Error';
$this->Session->setFlash( __( 'The photo could not be saved. Please, try again.' ) );
}
$this->RequestHandler->renderAs( $this , 'ajax' );
Configure::write( 'debug' , 0 );
$this->set( 'json' , json_encode( $json ) );
$this->render( '/Elements/ajax' );
}
私のテストビュー(ユーザーコントローラー上):
<?php echo $this->Form->create(
'Photo' ,
array( 'url' => array( 'controller' => 'photos' ,
'action' => 'add'
) ,
'id' => 'fileupload' ,
'enctype' => 'multipart/form-data'
)
); ?>
<-- Some HTML HERE-->
<?php
echo $this->TB->input(
'Photo.file' ,
array(
'prepend' => 'Upload' ,
'type' => 'file' ,
'class' => 'fileUpload' ,
//'multiple' => 'multiple',
'div' => FALSE ,
'between' => FALSE ,
'after' => FALSE ,
'label' => FALSE ,
'help' => NULL ,
)
);
?>
</form>
<-- Some (already tested) Javascript to make this work HERE-->
ビューはphpエラーなしでレンダリングされますが、ファイルをアップロードするとJavascriptエラーが発生し、デバッグには次のように表示されます:
GET http://<server>/<app>/users/add 404 (Not Found) jquery.min.js:1960
send jquery.min.js:1960
b.extend.ajax jquery.min.js:1840
(anonymous function) main.js:59
c jquery.min.js:215
p.fireWith jquery.min.js:249
b.extend.ready jquery.min.js:69
H jquery.min.js:10
実際には、GET メソッドと POST メソッドの両方でこのエラーが発生します (もちろん、jQuery のいくつかの異なる行を使用)。
アクションが PhotosController に設定されていても、ユーザーにアクセスしようとしています。ユーザーをどこにも指定していないので、ビューのせいだと思います。この問題を 1 週間解決しようとしていますが、これ以上のアイデアはありません。どんな助けでも大歓迎です。
前もって感謝します。