0

私はStationWagon(FuelPHPアプリ)を採用していますが、これまでのところ、非常にうまく機能しています。

複数の画像をサーバーにアップロードできるように(いくつかの助けを借りて)それを適応させました。これもうまく機能しています。

ただし、 1)Articles2)ArticleImagesの2つのテーブルがあればもっと意味があると思います。画像を記事に関連付けるために外部キーを使用します。したがって、記事を公開するときは、記事データを「Articles」テーブルに追加し、各画像を「ArticleImages」の新しい行に移動します。

したがって、最終的に私の「ArticleImages」テーブルは次のようになります。

ID | ImageURL | ArticleID

私の' articles.php 'コントローラーの一部:

<?php       

    public function action_add()
    {
    $val = Model_Article::validate('add_article'); //<-- maybe its just me but i never saw any similar to this in fuelphp sorry about this if im wrong

    // if your form validation is okay than continue with everyhing else
    if ($val->run())
    {
        $article = Model_Article::forge();
        // Custom configuration for this upload
        $config = array(
            'path' => DOCROOT.DS.'images',
            'randomize' => true,
            'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'),
        );

        Upload::process($config);

        // if a valid file is passed than the function will save, or if its not empty
        if (Upload::is_valid())
        {
            // save them according to the config
            Upload::save();

           //if you want to save to tha database lets grab the file name
            $value = Upload::get_files();  

            foreach($value as $files) {
               print_r($files); 
            }
            $article->filename = $value[0]['saved_as'];
         } 

        $status = (Input::post('save_draft') ? 0 : 1);

        if ( ! $val->input('category_id'))
        {
            $category_id = null;
        }
        else
        {
            $category_id = $val->validated('category_id');
        }

             $article->user_id = $this->user_id;
             $article->category_id = $category_id;
             $article->title = $val->validated('title');
             $article->body = $val->validated('body');
             $article->published = $status;


        if ($article->save())
        {
            Session::set_flash('success', 'Article successfully added.');
        }
        else
        {
            Session::set_flash('error', 'Something went wrong, '.
                'please try again!');
        }

        Response::redirect('articles/add');
    }

    $this->template->title = 'Add Article';
    $this->template->content = View::forge('articles/add')
        ->set('categories', Model_Category::find('all'), false)
        ->set('val', Validation::instance('add_article'), false);
    }

/* End of file articles.php */
4

2 に答える 2

2

ArticlesとArticleImagesの関係を作ろうとしています。ArticleImageはArticleに属しますが、Articleには多くのArticleImageがあります。FuelPHPには、あなたが達成しようとしていることのために組み込まれた機能があります。Object Relational MapperのFuelPHPドキュメント、特にBelongs To andHasManyリレーションをご覧ください。

于 2012-11-23T13:45:44.777 に答える
1

それで、私が数日前にコードを作成したとき、あなたは 1 つのファイル入力だけを要求しました。

悪意はありませんが、あなたはそれをすべて間違っています...

    foreach($value as $files) {
      print_r($files); 
    }
 $article->filename = $value[0]['saved_as'];

する必要があります

foreach($value as $files) {
           $articleimg = Model_Articleimages::forge();
           $articleimg->image_row_name = $files['saved_as']
        }

理解してもらうために

ここで何をしたか、$value = Upload::get_files();はい、これはすべての要素を取得しますが、要素をループする必要があるため、必要ありません

2番

これ$value[0]['saved_as']は最初の画像名のみを取得し、最初の画像名のみを取得します。ループしているため、上記の例で示したように、変数を参照する必要があります$files

于 2012-11-27T16:46:40.787 に答える