21297 Posts in 5734 Topics by 2603 members
|
Page:
1
|
Go to End | |
| Author | Topic: | 530 Views |
-
GenericViews CRUD

29 July 2011 at 2:02am Last edited: 29 July 2011 2:03am
I need froms which supplies CRUD in fronend. No problem to get it working in the backend. I just testetd GenericViews, but it just works for the action view. When i try to customize the url like this
form/8/view to
form/8/edit
i got an empty page. Silverstripe Version is 2.4.5
So i tried out how to make it by my own,
the form Page looks liek this. I tried to get the data after creation back into the form fields.i save the ID in "createPerson" with Session::set('ID',$submission->ID);
and get it back in myForm with DataObject::get_by_id('HorseSubmission',$id);
is it the right way? How to updated data for an special ID?
class FormPage extends Page {
static $db = array(
);static $has_one = array(
);}
class FormPage_Controller extends Page_Controller {
function myForm() {
if(Session::get("ID"))
{
$id = Session::get("ID");
$record = DataObject::get_by_id('HorseSubmission',$id);$fields = new FieldSet(
new TextField('Person','Person',$record->Person),
new ImageField('Image1','Bild',$record->Image1),
new ImageField('Image2','Bild',$record->Image2),
);// Create actions
$actions = new FieldSet(
new FormAction('createHorse', 'Submit')
);return new Form($this, 'myForm', $fields, $actions);
} //end if
else
{
$fields = new FieldSet(
new TextField('Name'),
new ImageField('Image1'),
new ImageField('Image2')
);$actions = new FieldSet(
new FormAction('createPerson', 'Submit')
);return new Form($this, 'myForm', $fields, $actions);
} // end else
}function createPerson($data, $form) {
$submission = new PersonSubmission();
$form->saveInto($submission);
$submission->write();
Session::set('ID',$submission->ID);
Director::redirectBack();
}
} -
Re: GenericViews CRUD

29 July 2011 at 3:13am
To update a Person i added a method "updatePerson". It's the same like "createPerson" above. I've just added the line $submission->ID = Session::get("ID");
So it's possible to specify the ID before ->write()Is this really the way you should solve a CRUD funcionality in SilverStripe?
For me it seems not bad, but really different from other Solutions.
The ID's are stored in OS temp dir, in Silverstripe cache -> Session
Nothing, no Id, no data is visible for the user - correct me i am wrong.function updatePerson($data, $form) {
$submission = new PersonSubmission();
$form->saveInto($submission);
$submission->ID = Session::get("ID");
$submission->write();
Session::set('ID',$submission->ID);
Director::redirectBack();
} -
Re: GenericViews CRUD

29 July 2011 at 7:30am
Not totally sure I get what you're trying to do, as we'd need to see your actual data object and not just the form. But the easiest way to pass the an ID from a Form to an action is to place it a hidden field. If you're editing an existing submission you can use (using you current method of storing the ID):
$id = Session::get("ID");
$submission = DataObject::get_by_id("PersonSubmission", $id);
$form->saveInto($submission);
$submission->write();Since the object record already exists you just need to pull it from the DB before saving into. Take a look at this page http://doc.silverstripe.org/sapphire/en/topics/datamodel#update I left out the if statement so you may want to add it back in
| 530 Views | ||
|
Page:
1
|
Go to Top |


