Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Archive

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, biapar, Willr, Ingo, simon_w

What's the correct way to publish a view after a form post.


Reply

863 Views

Avatar
adiwidjaja

1 November 2008 at 3:42am Community Member, 14 Posts

Hi,

I'm wondering what the correct method ist to publish a different view after a form post. My use case: I want to filter a view via a form. I currently have this code:

function FilterForm() {

//...

      $actions = new FieldSet(
         new FormAction( "filter", _t('UserDefinedForm.FILTER', 'Filtern') )
      );

//...

return new Form( $this, "FilterForm", $fields, $actions );
}

   function filter($data, $form) {
      $ids = $this->someComplicatedFiltering($data);
      $_GET["ids"] = $ids;
      return Director::direct($this->data()->URLSegment."//select");
}

function select() {
return array("FilteredIds" => $_GET["ids"]);
}

It works, but I don't think it's nice because the Director starts from the very beginning.

I tried to make this work:

$this->pushCurrent();

$controller = new ModelAsController();

$request = new HTTPRequest("GET", $this->data()->URLSegment.'//preview', $request->getVars(), $request->postVars());
$request->match('$URLSegment//$Action/$ID/$OtherID');

$result = $controller->handleRequest($request);

$this->popCurrent();
return $result->getBody();

But this didn't work, it always showed me the default view of the object. I traced this to a code segment, where the request url (object_urlsegment/view) is "pushed" so it's object_urlsegment/object_urlsegment/view (I don't understand the use case of that).

So finally my question: What is the correct method to do this? There are two versions of this use case: Fetch a different view of the current object or fetch a view of a different object.

Thanks for your clarification,

Cheers,

Andy