Well, this is harder than I thought it might be!
It took a while for me to just get a link that took me to a filtered
page. It is not as simple as one might think. This doesn't work:
-php echo link_to('Coordinator - Mathews', 'coordinator/list?
lastname=Mathews') -
It just goes to the coordinator list page unfiltered.
My example link with filter:
-php echo link_to('Coordinator - Mathews', 'coordinator/list?
filters[lastname]=Mathews&filter=filter') -
This link works and takes me to the 'coordinator' list page with only
the requested record(s) displayed: lastname = Mathews
The URL in the address bar when the above link is clicked:
http://mysite.com/coordinator/list/filters%5Blastname%5D/Mathews/filter/filter
Now, how to make a routing rule that will 'clean' up the link?
I tried this in routing.yml:
coordinator_name:
url: /coordinator/:filters[lastname]
param: { module: course_coordinator, action: list, filter: filter }
And the routing rule is found but the list is NOT filtered to lastname
= Mathews even though the desired URL returned is:
http://mysite.com/coordinator/Mathews but the list is unfiltered.
In my log, I see the routing rule parsed:
Apr 02 09:46:57 symfony [info] {sfRouting} match route
[coordinator_name] "/coordinator/:filters[lastname]"
Apr 02 09:46:57 symfony [info] {sfRequest} request parameters array
( 'filters[lastname]' => 'Mathews', 'module' => 'coordinator',
'action' => 'list', 'filter' => 'filter',)
but too bad it doesn't produce the desired results!
I tried this in routing.yml:
coordinator_name:
url: /coordinator/:filters[lastname]
param: { module: course_coordinator, action: list, filter: filter,
filters[lastname] }
But it produces error:
Fatal error: Unsupported operand types in ...symfony/util/
Spyc.class.php on line 667
This snippet looks interesting, but not really what we want:
http://www.symfony-project.org/snippets/snippet/146
I think this is the code in sfRouting.class.php that does the parsing:
77 public function getCurrentInternalUri($with_route_name =
false)
78 {
79 if ($this->current_route_name)
80 {
81 list($url, $regexp, $names, $names_hash, $defaults,
$requirements, $suffix) = $this->routes[$this->current_route_name];
82
83 $request = sfContext::getInstance()->getRequest();
84
85 if ($with_route_name)
86 {
87 $internal_uri = '@'.$this->current_route_name;
88 }
89 else
90 {
91 $internal_uri = $request->getParameter('module',
isset($defaults['module']) ? $defaults['module'] : '').'/'.$request-
>getParameter('action', isset($defaults['action']) ?
$defaults['action'] : '');
92 }
93
94 $params = array();
95
96 // add parameters
97 foreach ($names as $name)
98 {
99 if ($name == 'module' || $name == 'action') continue;
100
101 $params[] = $name.'='.$request->getParameter($name,
isset($defaults[$name]) ? $defaults[$name] : '');
102 }
103
104 // add * parameters if needed
105 if (strpos($url, '*'))
106 {
107 foreach ($request->getParameterHolder()->getAll() as $key
=> $value)
108 {
109 if ($key == 'module' || $key == 'action' ||
in_array($key, $names))
110 {
111 continue;
112 }
113
114 $params[] = $key.'='.$value;
115 }
116 }
There must be some way to route filtered pages?? Can anyone please
help?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---