Regards,
Bart McLeod
Op 11-3-2010 16:36, Jelle-Jan van Veelen - Zicht schreef:
When you inspect the response headers after submitting a search form, you will see that the forms are posted to a search router (/tracks/search_router). There is probably some logic in that controller/action that takes the posted values and redirects the browser to another page, depending on what the keys in the postbody are. You could easily build that with Zend Framework too, it is just a matter of checking for POST values and redirect to your own URL's :)
So, something like this:
class TracksController extends Zend_Controller_Action {
public function searchAction() {
if ($this->getRequest()->getParam('artist') {
// search for artist here
}
if ($this->getRequest()->getParam('title') {
// search for title here
}
}
public function searchRouterAction() {
$values = $this->getRequest()->getPost();
if (isset($values['artist'])) {
$this->_redirect(sprintf('/tracks/search/artist/%s', $values['artist']));
exit();
}
if (isset($values['title'])) {
$this->_redirect(sprintf('/tracks/search/title/%s', $values['title']));
exit();
}
}
}
Regards,
Jelle-Jan
On 11-3-2010 16:20, Andy Daykin wrote:Take for example this site http://www.musicbackingtracks.co.uk/tracks/search/artist/creed, I just picked a site build with codeigniter, that has a search form. The parameter is artist, with a value of creed. They are able to get nice looking url's with search forms, that's what I am really looking for. SEO is the main concern that I have, it's not really about looking good in a browser.-Andy
From: Bart McLeodSent: Tuesday, March 09, 2010 5:08 AMTo: Andy Daykin ; fw-mvcSubject: Re: [fw-mvc] Re: Changing get parameters to controller/action/param/value/param/valuein your view script, where you use the helper.
The url in the browser will only look like this after you click the link generated by the view helper.
Is it only about a good looking url in the browser? The get request from a search form for example will still have the question mark. But I cannot see the problem with that.
Bart
Op 8-3-2010 19:24, Andy Daykin schreef:So where in my code would I put:$url = $view->url($_GET)Is that something that should be added in the bootstrap. Will the actual url in the browser look likehttp://example.com/controller/action/param/value?Thanks,-Andy
From: Bart McLeodSent: Monday, March 08, 2010 6:18 AMTo: Andy DaykinSubject: Re: [fw-mvc] Re: Changing get parameters to controller/action/param/value/param/valueHi Andy,
I probably posted to the wrong list, so you may have missed it. I set out to fix a couple of issues with the Zend_View_Helper_Url.
No one objected to that, so I also filed your issue in the issue tracker and assigned it to myself.
I did not yet look into it much, but it seems that how the url is assembled in the view helper depends on which type of router is in use at that moment.
There a quite a few router types, so I must first choose if all routers can be made to preserve get parameters in the new form and if this will brake people's applications if they rely on the helper not preserving the get params.
In the meanwhile, while trying to write up a testcase for Zend_View_Helper_Url, I found that what you are trying to achieve can be simply accomplished by writing:
$url = $view->url($_GET);
This will put all of your $_GET parameters in the form you desire.
I accidentally stumbled upon this and I now realize that I must update the issue and resolve it with this tip.
Regards,
Bart McLeod
Andy Daykin schreef:My intent was to find a way to change the part of the code where the get variables are picked up, so I can do:$this->getRequest()->getParam('param');from a url like http://example.com/?param=valueand convert it to http://example.com/param/valueusing something like $request_uri = preg_replace("|/(.*)|", "\\1", str_replace("\\", "/", $_SERVER['REQUEST_URI']));So I would be manipulating the url that comes in and the variable from where the getParam method takes in the get parameters.What variables would I need to change if I wrote a function in the bootstrap?-Andy
From: Саша СтаменковићSent: Wednesday, March 03, 2010 3:34 AMTo: Bart McLeodSubject: Re: [fw-mvc] Re: Changing get parameters to controller/action/param/value/param/valueGuys, it's not just for better looking urls.
There is another problem with /controller/action?param=value, url helper don't see get parameters, it only see parametersif they are zf style, so param will not be handled by url helper if it is not in zf param style.
People coming up with their own implementations for url helper which handles this, example http://robertbasic.com/blog/myurl-view-helper-for-zend-framework/
Regards,
Saša Stamenković
On Wed, Mar 3, 2010 at 10:03 AM, Bart McLeod <mcleod@spaceweb.nl> wrote:
David Muir schreef:For this, you only need a custom route. No extra rewrite.That would only be necessary if the desired form were actually required. Zend's default router sees them as being equivalent: /controller/action/param/value /controller/action?param=value so in both cases $this->getRequest()->getParam('param'); //returns 'value' However, if you're wanting something like: /search/value
The point in the original post is that for some unknown reason the get url should be consistent with the other urls in the application.
So the question is how can we make /controller/action?param=value appear as /controller/action/param/value
But the more important question, as pointed out by Andreas is "Why?"
then yes, you'll need to do the rewrite server-side.
--
Bart McLeod
Space Web
Middenlaan 47
6865 VN Heveadorp
The Netherlands
t +31(0)26 3392952
m 06 51 51 89 71
@ info@spaceweb.nl
www.spaceweb.nlBart McLeod is a Zend Certified Engineer.
--
Bart McLeod
Space Web
Middenlaan 47
6865 VN Heveadorp
The Netherlands
t +31(0)26 3392952
m 06 51 51 89 71
@ info@spaceweb.nl
www.spaceweb.nlBart McLeod is a Zend Certified Engineer.
--
Bart McLeod
Space Web
Middenlaan 47
6865 VN Heveadorp
The Netherlands
t +31(0)26 3392952
m 06 51 51 89 71
@ info@spaceweb.nl
www.spaceweb.nlBart McLeod is a Zend Certified Engineer.
--
Zicht online
Coolhaven 238, 3024 AP Rotterdam
telefoon: 010 221 02 00
e-mail: jellejan@zicht.nl
www: www.zicht.nl
KvK: 27 19 33 76Het laatste nieuws van Zicht:
Robeco Zomerconcerten platform 2010 live
De laatste post op de Zicht blog:
Bloed Oranje
--
Bart McLeod Space Web Middenlaan 47 6865 VN Heveadorp The Netherlands t +31(0)26 3392952 m 06 51 51 89 71 @ info@spaceweb.nl www.spaceweb.nl | Bart McLeod is a Zend Certified Engineer. |
没有评论:
发表评论