diff --git a/Grid/Column/ActionsColumn.php b/Grid/Column/ActionsColumn.php index 99ca5116..9fb785c7 100644 --- a/Grid/Column/ActionsColumn.php +++ b/Grid/Column/ActionsColumn.php @@ -42,11 +42,12 @@ public function getRouteParameters($row, $action) $name = $this->getValidRouteParameters($parameter); } $routeParameters[$name] = $row->getField($parameter); + } elseif( array_key_exists( $parameter, $row->getFields())) { + $routeParameters[$this->getValidRouteParameters($name)] = $row->getField( $parameter ); } else { $routeParameters[$this->getValidRouteParameters($name)] = $parameter; } } - return $routeParameters; } diff --git a/Grid/Row.php b/Grid/Row.php index 6f6263cb..24180d47 100644 --- a/Grid/Row.php +++ b/Grid/Row.php @@ -52,6 +52,11 @@ public function getField($rowId) return isset($this->fields[$rowId]) ? $this->fields[$rowId] : ''; } + public function getFields() + { + return $this->fields; + } + public function setClass($class) { $this->class = $class; diff --git a/Twig/DataGridExtension.php b/Twig/DataGridExtension.php index 3eed9d81..419fe81c 100755 --- a/Twig/DataGridExtension.php +++ b/Twig/DataGridExtension.php @@ -79,6 +79,8 @@ public function setPagerFanta(array $def) public function initRuntime(\Twig_Environment $environment) { $this->environment = $environment; + + return; // return here as a quickfix for bundle issue #316, see upstream // Avoids the exception "Variable does not exist" with the _self template $globals = $this->environment->getGlobals(); @@ -124,17 +126,17 @@ public function initRuntime(\Twig_Environment $environment) public function getFunctions() { return array( - 'grid' => new \Twig_Function_Method($this, 'getGrid', array('is_safe' => array('html'))), - 'grid_html' => new \Twig_Function_Method($this, 'getGridHtml', array('is_safe' => array('html'))), - 'grid_url' => new \Twig_Function_Method($this, 'getGridUrl', array('is_safe' => array('html'))), - 'grid_filter' => new \Twig_Function_Method($this, 'getGridFilter', array('is_safe' => array('html'))), - 'grid_column_operator' => new \Twig_Function_Method($this, 'getGridColumnOperator', array('is_safe' => array('html'))), - 'grid_cell' => new \Twig_Function_Method($this, 'getGridCell', array('is_safe' => array('html'))), - 'grid_search' => new \Twig_Function_Method($this, 'getGridSearch', array('is_safe' => array('html'))), - 'grid_pager' => new \Twig_Function_Method($this, 'getGridPager', array('is_safe' => array('html'))), - 'grid_pagerfanta' => new \Twig_Function_Method($this, 'getPagerfanta', array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid' , array($this, 'getGrid'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid_html', array($this, 'getGridHtml'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid_url', array($this, 'getGridUrl'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid_filter', array($this, 'getGridFilter'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid_column_operator', array($this, 'getGridColumnOperator'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid_cell', array($this, 'getGridCell'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid_search', array($this, 'getGridSearch'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid_pager', array($this, 'getGridPager'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('grid_pagerfanta', array($this, 'getPagerfanta'), array('is_safe' => array('html'))), // Other methods with only the grid as input and output argument (Twig >= 1.5.0) - 'grid_*' => new \Twig_Function_Method($this, 'getGrid_', array('is_safe' => array('html'))) + new \Twig_SimpleFunction('grid_*', array($this, 'getGrid_'), array('is_safe' => array('html'))) ); }