0

さて、基本的にユーザーを管理する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 週間解決しようとしていますが、これ以上のアイデアはありません。どんな助けでも大歓迎です。

前もって感謝します。

4

0 に答える 0