Grid – označení více řádků a jejich dupliakce
- Desttro
- Člen | 126
Zdravím,
řešil někdo duplikaci/kopírování řádku v gridu? Např: Mám Grido, zde
v pravo mohu pomocí checkboxů vybrat několik položek – vyberu je. Potom
je dole selectbox a vyberal bych duplikovat – zduplikuje to přesně ty
vybrané řádky ale samozřejmě s jiným ID.
Nevím ani jak to udělat u jedné položky.
Takhle jsem vyřešil mazání, ale nemohu přijít na duplikaci.
public function actionDelete()
{
$id = $this->getParameter('id');
$id_out = is_array($id) ? implode(', ', $id) : $id;
$this->database->table('manufacturing')->where('id', $id)->update(array('trash' => '1'));
$this->flashMessage("Action '$this->action' for row with id: $id_out done.", 'success');
$this->redirect('default');
}
ve skutečnosti nemažu ale jenom nastavuju sloupeček trash na 1 a v modelu mám ať vypíše pouze s „trash“ kde je 0
děkuji za rady
- Pavel Kravčík
- Člen | 1196
Uděláš to úplně stejně. Máš to dokonce i napsané v dokumentaci.
$grid->setOperation(array('delete' ⇒ 'Delete'), function($operation, $id) { … } );
Vytáhneš si z těch dat, co posíláš do modelu podle $id ty k zduplikování. Smažeš jim $id a použiješ insert() nebo jakkoliv jinak je zduplikuješ. A profit.
- Desttro
- Člen | 126
Děkuji, no, a co dát do parametrů toho insert()?
$this->database->table('manufacturing')->insert();
Má tam být pole těch dat, ale nejlépe bych chtěl ať si je veme automaticky, nebo to můsím předávat nějak parametry?
Děkuji
edit:
zkouším něco jako:
$data = $this->database->table('manufacturing')->where('id', $id);
$this->database->table('manufacturing')->insert($data);
ale hází to
Notice
Array to string conversion
Editoval Desttro (13. 2. 2015 11:30)
- Pavel Kravčík
- Člen | 1196
Protože ActiveRow je řádek DB a neměl by jít upravit. Zkus prohledat fórum, je tu k tomu mnoho fundovanějších vysvětlení.