2011-01-21 77 views
1

我使用的是gallery3 php软件,它基于kohana框架。有人知道如何添加复选框到专辑信息表单吗?Gallery3中Kohana窗体上的复选框

我想是这样的:

静态函数get_edit_form($父){$ 形式=新的锻造( “专辑/更新/ {$父 - > ID}”, “”, “后”,数组(“id”=>“g-edit-album-form”)); $ form-> hidden(“from_id”) - > value($ parent-> id); $ group = $ form-> group(“edit_item”) - > label(t(“Edit Album”));

​​

公共功能更新($ album_id){ 访问:: verify_csrf(); $ album = ORM :: factory(“item”,$ album_id); access :: required(“view”,$ album); access :: required(“edit”,$ album);

$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)); 
} 

}

领域确实出现在表单上,​​但是字段值不会被保存到数据库中。在数据库中它是一个tinyint(1)。

+0

您可能想要在问题开始时修复代码格式。 – Donovan 2011-01-21 17:25:00

回答

0

Kohana使用模型将数据保存到数据库中。由于$album->save();,应该在应用程序的某个位置有一个模型,具体取决于Kohana的版本。

转到/modules/gallery/models。有一个文件叫做item.php。这是应用程序用于保存/加载/创建项目(以及专辑)的模型。在第447行有一个实际上将相册内容保存在数据库中的命令。您需要更改该行以保存复选框的值。

+0

我正在使用最新版本的gallery3。在item.php中没有提到字段名称。有一个过程贯穿字段列表并保存它们。字段名称在控制器albums.php中提及。我已经添加了自己的领域。所有其他字段保存得很好,它只是复选框值不被保存。 – Marek 2011-01-23 14:05:16

0

已解决。问题是您必须使用复选框的“已选中”字段,而不是分配中的值字段。

在album.php  

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

在albums.php:

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

在DB的字段也命名为 '信息',可以是一个位。

相关问题