Ich habe eine benutzerdefinierte Rasterspalte mithilfe der Feld-URL in einer benutzerdefinierten Datenbank hinzugefügt:
$this->addColumn('url', array(
'header' => Mage::helper('companymodule')->__('Has Website'),
'align' => 'left',
'index' => 'url',
'renderer' => new Company_Module_Block_Adminhtml_Module_Grid_Renderer_HasUrl(),
'type' => 'options',
'options' => Mage::getSingleton('companymodule/hasurl')->getOptionArray(),
));
Und erstellt diese benutzerdefinierte gerendert:
class Company_Module_Block_Adminhtml_Module_Grid_Renderer_HasUrl extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row)
{
$value = trim((string)$row->getData($this->getColumn()->getIndex()));
if (empty($value)) {
return 'No';
} else {
return 'Yes';
}
}
}
Sowie ein benutzerdefiniertes Modell für den Filter dropdwon:
class Company_Module_Model_Hasurl extends Varien_Object
{
static public function getOptionArray()
{
return array(
'Yes' => Mage::helper('companymodule')->__('Yes'),
'No' => Mage::helper('companymodule')->__('No')
);
}
}
Dies funktioniert einwandfrei, es sei denn, Sie versuchen zu filtern. Ich denke, es wird versucht, den Wert 'Ja' mit dem Wert von $row->getData($this->getColumn()->getIndex())
(dem URL-Feld in der Datenbanktabelle) abzugleichen. Aber anstatt den URL-Feldwert selbst abzugleichen, versuche ich im Grunde, nach zu filtern, ((bool)empty($url))
damit der Benutzer nach ob filtern kann oder nicht, dieser Datenbankeintrag hat eine URL oder nicht.
Wie kann ich eine benutzerdefinierte Logik für einen Filter wie diesen erstellen?
'renderer' => Company_Module_Block_Adminhtml_Module_Grid_Renderer_HasUrl
Antworten:
Versuchen Sie, einen benutzerdefinierten Filter-Rückruf hinzuzufügen:
in Ihrem Raster:
und fügen Sie eine Methode wie die folgende hinzu:
Beachten Sie, dass es nicht getestet wurde. Möglicherweise müssen Sie die Datenbank auf leer anstatt auf null prüfen. Stellen Sie außerdem sicher, dass Sie den richtigen Tabellenalias haben (wenn sich die URL nicht in der main_table befindet).
quelle
Versuchen Sie, einen benutzerdefinierten Filter-Rückruf hinzuzufügen: Hier fügen wir dem Administrator-Benutzerraster eine neue Spalte mit dem Rollennamen hinzu.
in Ihrem Raster:
und fügen Sie eine 2-Methode wie folgt hinzu:
Fügen Sie diese Methode für den Rollenfilter mit Dropdown-Liste hinzu
quelle