object_actions:
_edit: ~
send: { params: { onclick : "if(confirm('Are you sure?')){return true;}else{return false;}" } }
Showing posts with label admin-generator. Show all posts
Showing posts with label admin-generator. Show all posts
Thursday, April 21, 2011
Display Confirm Message before a Custom Object Action with Admin Generator in Symfony
Labels:
admin-generator,
generator,
symfony
Monday, April 4, 2011
Correct the Icon Position of sfAdminThemejRollerPlugin Buttons in IE, Chrome, Safari
Use this code in the layout after the CSS definitions....
Labels:
admin-generator,
css,
jroller,
sfAdminThemejRollerPlugin,
symfony
Tuesday, January 4, 2011
Sort By Foreign Key or Custom Column in Symfony Admin Generator
This solution is works with Doctrine ORM.
- Put this to the backend module's actions.class.php
protected function addSortQuery($query) { $rootAlias = $query->getRootAlias(); if (array(null, null) == ($sort = $this->getSort())) { return; } $s = $sort[0]; $fields = $this->varHolder->get('configuration')->getFieldsDefault(); if ($fields != null) { $field = $fields[$s]; if ($field != null) { if (isset($field['sortBy'])) { $criterion = $field['sortBy']; if ($criterion != null) { $s = $criterion; } } } } if (isset($field['noRootAlias']) && $field['noRootAlias'] == true) { $query->addOrderBy($s . ' ' . $sort[1]); } else { $query->addOrderBy($rootAlias.'.'.$s . ' ' . $sort[1]); } } - Let's see first the foreign key sorting with an example. If you want to show the related object's name instead of its id, you must use the relation name (in this case 'Group'). To enable sorting, add the sortBy parameter to the field.
config: ... fields: name: { label: Name } Group: { label: Group, sortBy: Group.name } list: title: Users display: [id, name, Group]That's all, the sorting now works, but the column's name is not clickable yet. You have to change the generator's template. As I use the sfAdminThemejRollerPlugin, I will do this with that. - Open the \ plugins \ sfAdminThemejRollerPlugin \ data \ generator \ sfDoctrineModule \ jroller \ template \ templates \ _list_th_tabular.php file and change the 4th row from this:
<?php if ($field->isReal()): ?>
to this:<?php if ($field->isReal() || $field->getConfig('sortBy')): ?>Now the foreign key sorting must work. - Let's see the custom column sorting with an example. The data you will want to see in the custom column is somewhere in the database. You have to add your custom column to the original sql statement. Use joins, relations or simply subqueries. You can overwrite the sql in backend module's actions.class.php:
protected function buildQuery() { $query = parent::buildQuery(); // do what ever you like with the query // use the die($query->getSqlQuery()); row to see the original sql statement return $query->addSelect('*, (SELECT foo FROM bar) as foobarcolumn'); }As you can see I didn't change the query output, I only add an extra column to the query. - Now we have to add this column to the generator.yml...
config: ... fields: name: { label: Name } Group: { label: Group, sortBy: Group.name } foobar: { label: FooBar, sortBy: foobarcolumn, noRootAlias: true } list: title: Users display: [id, name, Group, foobar]
Labels:
admin-generator,
doctrine,
mysql,
sorting,
symfony
Tuesday, October 26, 2010
generator.yml: Related Object's Fields in the DISPLAY List
If you want to show only the name (default field) of a related object, you can use the name of the object:
This case Category will return with $this->getCategory()->getName() where $this is the current object. For other fields, create simple functions on the model class. Ex.:
Now put this to the display list:
[id, name, Category]
This case Category will return with $this->getCategory()->getName() where $this is the current object. For other fields, create simple functions on the model class. Ex.:
// lib/model/doctrine/Article.class.php
public function getCategoryDescription()
{
return $this->getCategory()->getDescription();
}
Now put this to the display list:
[id, name, category_description]
Labels:
admin-generator,
generator,
symfony
Subscribe to:
Posts (Atom)