일부 MongoDB 데이터를 편집하기 위해 Lithium을 사용하여 편집 양식을 만들려고합니다. (다른 도구에 의해 생산) 내 데이터는 다음과 같습니다Lithium PHP, MongoDB 및 배열 용 폼 헬퍼
이{
"thing_a" : "value_a",
"thing_b" : "value_b",
"settings" :
{
"sub_thing_a" : ["sub_value_a", "sub_value_b"]
}
}
난 데 문제는 '설정'에서 배열 'sub_thing_a'로입니다. 각 값에 대한 텍스트 상자를 표시하여 편집하고 다시 저장할 수있게해야합니다. 궁극적 인 목표는 폼에/폼에서 값을 추가/삭제하고 배열에서 값을 가져 오는 jQuery를 사용하는 것입니다.하지만 지금은 값을 편집하고 저장하는 간단한 버전 작업을 얻으려고합니다. 멀리.
내 모델은 정말 간단하다 :
<?php
namespace app\models;
class Test extends \lithium\data\Model {
protected $_meta = array('source' => 'test');
}
?>
마찬가지로 컨트롤러 :
<?php
namespace app\controllers;
use app\models\Test;
class TestsController extends \lithium\action\Controller {
public function index() {
$tests = Test::all();
return compact('tests');
}
public function edit($id=null) {
if(isset($id)) {
$test = Test::find($id);
} else {
$test = Test::create();
}
if ($this->request->data) {
if ($test->save($this->request->data)) {
$this->redirect('/tests/index');
}
}
return compact('test');
}
}
?>
문제는 편집 양식을 시작 - 지금 그것을 가지고, 그것은 내 배열의 값을 표시합니다 , 데이터가 올바르게 기록되지 않습니다. 이걸 어떻게 접근해야하는지에 대한 단서가 있습니까? (참고 : 앞에서 언급했듯이 폼에 텍스트 상자를 추가/삭제할 수있는 동적 버전을 생성해야하므로 일종의 도우미 제어가 가능해야합니다. 경우에이 일을 정말 쉽게 '규칙'방법이)
edit.html.php :. 완전성에 대해
<?=$this->form->create($test); ?>
<?=$this->form->field('thing_a'); ?>
<?php foreach ($test->settings->sub_thing_a as $i=>$elem): ?>
<?=$this->form->field('settings.sub_thing_a',array('label'=>'thing', 'value'=>$test->settings->sub_thing_a[$i]));?>
<?php endforeach; ?>
<?=$this->form->submit('save'); ?>
<?=$this->form->end(); ?>
및 index.html.php()
<?php foreach($tests as $test): ?>
<h2><?=$this->html->link($test->thing_a,'/tests/edit/'.$test->_id); ?></h2>
<?php foreach($test->settings->sub_thing_a as $item): ?>
<h4><?=$item ?></h4>
<?php endforeach; ?>
<?php endforeach; ?>