2011-01-21 9 views
1

私はgallery3 phpソフトウェアを使用しています。これはkohanaフレームワークに基づいています。誰もがアルバム情報フォームにチェックボックスを追加する方法を知っていますか?ギャラリー3ソフトウェアのKohanaフォームのチェックボックス

私はこのような試み:

静的関数get_edit_form($親){ $フォーム=新しいフォージ( "アルバム/更新/ {$ parent-> ID}"、 ""、 "ポスト"、配列( "id" => "g-edit-album-form")); $ form-> hidden( "from_id") - > value($ parent-> id); $ group = $ form-> group( "edit_item") - >ラベル(t( "Edit Album"));

​​

公共機能更新($ album_id){ アクセス:: verify_csrf(); $ album = ORM :: factory( "item"、$ album_id); アクセス::必須( "ビュー"、$アルバム); アクセス::必須( "編集"、$アルバム);

$form = album::get_edit_form($album); 
try { 
    $valid = $form->validate(); 
    $album->title = $form->edit_item->title->value; 
    $album->description = $form->edit_item->description->value; 
    /* MPK: information fields for albums */ 
    $album->information = $form->edit_item->information->value; 
    $album->info = $form->edit_item->info->value; 
    $album->sort_column = $form->edit_item->sort_order->column->value; 
    $album->sort_order = $form->edit_item->sort_order->direction->value; 
    if (array_key_exists("name", $form->edit_item->inputs)) { 
    $album->name = $form->edit_item->inputs["name"]->value; 
    } 
    $album->slug = $form->edit_item->slug->value; 
    $album->validate(); 
} catch (ORM_Validation_Exception $e) { 
    // Translate ORM validation errors into form error messages 
    foreach ($e->validation->errors() as $key => $error) { 
    $form->edit_item->inputs[$key]->add_error($error, 1); 
    } 
    $valid = false; 
} 

if ($valid) { 
    $album->save(); 
    module::event("item_edit_form_completed", $album, $form); 

    log::success("content", "Updated album", "<a href=\"albums/$album->id\">view</a>"); 
    message::success(t("Saved album %album_title", 
        array("album_title" => html::purify($album->title)))); 

    if ($form->from_id->value == $album->id) { 
    // Use the new url; it might have changed. 
    json::reply(array("result" => "success", "location" => $album->url())); 
    } else { 
    // Stay on the same page 
    json::reply(array("result" => "success")); 
    } 
} else { 
    json::reply(array("result" => "error", "html" => (string)$form)); 
} 

}

フィールド、フォーム上に表示されていますが、フィールドの値がDBに保存されません。 DBではtinyint(1)です。

+0

質問の先頭にコードの書式を修正したい場合があります。 – Donovan

答えて

0

Kohanaはモデルを使用してデータベースにデータを保存します。 $album->save();のため、Kohanaのバージョンに応じて、アプリケーションのどこかにモデルが存在する必要があります。

/modules/gallery/modelsにアクセスしてください。 item.phpというファイルがあります。これは、アイテム(およびアルバム)を保存/ロード/作成するためにアプリケーションによって使用されるモデルです。 447行目には実際にデータベースの内容をデータベースに保存するコマンドがあります。チェックボックスの値を保存するには、その行を変更する必要があります。

+0

私はgallery3の最新バージョンを使用しています。 item.phpには、フィールド名は記述されていません。フィールドのリストを実行し、それらを保存するプロシージャがあります。フィールド名は、コントローラalbums.phpに記載されています。私はそれに自分のフィールドを追加しました。他のフィールドはすべて保存されますが、チェックボックスの値は保存されません。 – Marek

0

解決済み。問題は、チェックボックスの「チェックされた」フィールドを使用しなければならず、割り当ての値フィールドではないことでした。 albums.phpでalbum.php  

$group->checkbox("info")->label(t("Informational"))->value($parent->info)->checked($parent->info); 

は:

$album->info = $form->edit_item->info->checked; 

DBのフィールドは、 '情報' と命名され、ビットすることができます。