我使用的是基于kohana框架的gallery3 php软件。有人知道如何在相册信息表格中添加复选框吗?
我试过这样:
静态函数get_edit_form($ parent){ $ form = new Forge( “albums / update / {$ parent-> id}”,“”,“post”,array(“id”=>“g-edit-album-form”)); $形式 - >隐藏( “from_id”) - >值($父 - > ID); $ group = $ form-> group(“edit_item”) - > label(t(“编辑相册”));
$group->input("title")->label(t("Title"))->value($parent->title)
->error_messages("required", t("You must provide a title"))
->error_messages("length", t("Your title is too long"));
$group->textarea("description")->label(t("Description"))->value($parent->description);
/* MPK: information fields for albums */
$group->textarea("information")->label(t("Information text"))->value($parent->information);
$group->checkbox("info")->label(t("Informational"))->value($parent->info);
if ($parent->id != 1) {
$group->input("name")->label(t("Directory Name"))->value($parent->name)
->error_messages("conflict", t("There is already a movie, photo or album with this name"))
->error_messages("no_slashes", t("The directory name can't contain a \"/\""))
->error_messages("no_trailing_period", t("The directory name can't end in \".\""))
->error_messages("required", t("You must provide a directory name"))
->error_messages("length", t("Your directory name is too long"));
$group->input("slug")->label(t("Internet Address"))->value($parent->slug)
->error_messages(
"conflict", t("There is already a movie, photo or album with this internet address"))
->error_messages(
"not_url_safe",
t("The internet address should contain only letters, numbers, hyphens and underscores"))
->error_messages("required", t("You must provide an internet address"))
->error_messages("length", t("Your internet address is too long"));
} else {
$group->hidden("name")->value($parent->name);
$group->hidden("slug")->value($parent->slug);
}
和
公共功能更新($ 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));
}
}
该字段确实显示在表单上,但字段值不会保存到数据库中。在DB中它是一个tinyint(1)。
答案 0 :(得分:0)
Kohana使用模型将数据保存在数据库中。由于$album->save();
,你应该在应用程序的某个地方有一个模型,具体取决于Kohana的版本。
转到/modules/gallery/models
。有一个名为item.php
的文件。这是应用程序用于保存/加载/创建项目(以及专辑)的模型。在第447行,有一个命令,它实际上将相册的内容保存在数据库中。您需要更改该行以保存复选框的值。
答案 1 :(得分: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中的字段也被命名为“info”,可以是一点。