本文整理汇总了PHP中Sonata\AdminBundle\Admin\AdminInterface::getDatagrid方法的典型用法代码示例。如果您正苦于以下问题:PHP AdminInterface::getDatagrid方法的具体用法?PHP AdminInterface::getDatagrid怎么用?PHP AdminInterface::getDatagrid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sonata\AdminBundle\Admin\AdminInterface
的用法示例。
在下文中一共展示了AdminInterface::getDatagrid方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: batchAction
/**
* return the Response object associated to the batch action
*
* @throws \RuntimeException
* @return \Symfony\Component\HttpFoundation\Response
*/
public function batchAction()
{
if ($this->get('request')->getMethod() != 'POST') {
throw new \RuntimeException('invalid request type, POST expected');
}
if ($data = json_decode($this->get('request')->get('data'), true)) {
$action = $data['action'];
$idx = $data['idx'];
$all_elements = $data['all_elements'];
} else {
$action = $this->get('request')->get('action');
$idx = $this->get('request')->get('idx');
$all_elements = $this->get('request')->get('all_elements', false);
}
$batchActions = $this->admin->getBatchActions();
if (!array_key_exists($action, $batchActions)) {
throw new \RuntimeException(sprintf('The `%s` batch action is not defined', $action));
}
if (count($idx) == 0 && !$all_elements) {
// no item selected
$this->get('session')->setFlash('sonata_flash_info', 'flash_batch_empty');
return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
}
$askConfirmation = isset($batchActions[$action]['ask_confirmation']) ? $batchActions[$action]['ask_confirmation'] : true;
if ($askConfirmation && $this->get('request')->get('confirmation') != 'ok') {
$data = json_encode(array('action' => $action, 'idx' => $idx, 'all_elements' => $all_elements));
$datagrid = $this->admin->getDatagrid();
$formView = $datagrid->getForm()->createView();
return $this->render('SonataAdminBundle:CRUD:batch_confirmation.html.twig', array('action' => 'list', 'datagrid' => $datagrid, 'form' => $formView, 'data' => $data));
}
// execute the action, batchActionXxxxx
$action = \Sonata\AdminBundle\Admin\BaseFieldDescription::camelize($action);
$final_action = sprintf('batchAction%s', ucfirst($action));
if (!method_exists($this, $final_action)) {
throw new \RuntimeException(sprintf('A `%s::%s` method must be created', get_class($this), $final_action));
}
$datagrid = $this->admin->getDatagrid();
$datagrid->buildPager();
$query = $datagrid->getQuery();
$query->setFirstResult(null);
$query->setMaxResults(null);
if (count($idx) > 0) {
$this->admin->getModelManager()->addIdentifiersToQuery($this->admin->getClass(), $query, $idx);
}
return call_user_func(array($this, $final_action), $query);
}
示例2: search
/**
* @param AdminInterface $admin
* @param string $term
* @param int $page
* @param int $offset
*
* @return \Sonata\AdminBundle\Datagrid\PagerInterface
*
* @throws \RuntimeException
*/
public function search(AdminInterface $admin, $term, $page = 0, $offset = 20)
{
$datagrid = $admin->getDatagrid();
$found = false;
foreach ($datagrid->getFilters() as $name => $filter) {
/** @var $filter FilterInterface */
if ($filter->getOption('global_search', false)) {
$filter->setCondition(FilterInterface::CONDITION_OR);
$datagrid->setValue($name, null, $term);
$found = true;
}
}
if (!$found) {
return false;
}
$datagrid->buildPager();
$pager = $datagrid->getPager();
$pager->setPage($page);
$pager->setMaxPerPage($offset);
return $pager;
}
示例3: batchAction
/**
* return the Response object associated to the batch action
*
* @throws \RuntimeException
* @return \Symfony\Component\HttpFoundation\Response
*/
public function batchAction()
{
if ($this->get('request')->getMethod() != 'POST') {
throw new \RuntimeException('invalid request type, POST expected');
}
$action = $this->get('request')->get('action');
$idx = $this->get('request')->get('idx');
$all_elements = $this->get('request')->get('all_elements', false);
if (count($idx) == 0 && !$all_elements) { // no item selected
$this->get('session')->setFlash('sonata_flash_notice', 'flash_batch_empty');
return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
}
if (!array_key_exists($action, $this->admin->getBatchActions())) {
throw new \RuntimeException(sprintf('The `%s` batch action is not defined', $action));
}
// execute the action, batchActionXxxxx
$action = \Sonata\AdminBundle\Admin\BaseFieldDescription::camelize($action);
$final_action = sprintf('batchAction%s', ucfirst($action));
if (!method_exists($this, $final_action)) {
throw new \RuntimeException(sprintf('A `%s::%s` method must be created', get_class($this), $final_action));
}
$datagrid = $this->admin->getDatagrid();
$datagrid->buildPager();
$query = $datagrid->getQuery();
$query->setFirstResult(null);
$query->setMaxResults(null);
if (count($idx) > 0) {
$this->admin->getModelManager()->addIdentifiersToQuery($this->admin->getClass(), $query, $idx);
}
return call_user_func(array($this, $final_action), $query);
}
示例4: batchAction
/**
* Batch action.
*
* @return Response|RedirectResponse
*
* @throws NotFoundHttpException If the HTTP method is not POST
* @throws \RuntimeException If the batch action is not defined
*/
public function batchAction()
{
$restMethod = $this->getRestMethod();
if ('POST' !== $restMethod) {
throw $this->createNotFoundException(sprintf('Invalid request type "%s", POST expected', $restMethod));
}
// check the csrf token
$this->validateCsrfToken('sonata.batch');
$confirmation = $this->get('request')->get('confirmation', false);
if ($data = json_decode($this->get('request')->get('data'), true)) {
$action = $data['action'];
$idx = $data['idx'];
$allElements = $data['all_elements'];
$this->get('request')->request->replace($data);
} else {
$this->get('request')->request->set('idx', $this->get('request')->get('idx', array()));
$this->get('request')->request->set('all_elements', $this->get('request')->get('all_elements', false));
$action = $this->get('request')->get('action');
$idx = $this->get('request')->get('idx');
$allElements = $this->get('request')->get('all_elements');
$data = $this->get('request')->request->all();
unset($data['_sonata_csrf_token']);
}
$batchActions = $this->admin->getBatchActions();
if (!array_key_exists($action, $batchActions)) {
throw new \RuntimeException(sprintf('The `%s` batch action is not defined', $action));
}
$camelizedAction = BaseFieldDescription::camelize($action);
$isRelevantAction = sprintf('batchAction%sIsRelevant', ucfirst($camelizedAction));
if (method_exists($this, $isRelevantAction)) {
$nonRelevantMessage = call_user_func(array($this, $isRelevantAction), $idx, $allElements);
} else {
$nonRelevantMessage = count($idx) != 0 || $allElements;
// at least one item is selected
}
if (!$nonRelevantMessage) {
// default non relevant message (if false of null)
$nonRelevantMessage = 'flash_batch_empty';
}
$datagrid = $this->admin->getDatagrid();
$datagrid->buildPager();
if (true !== $nonRelevantMessage) {
$this->addFlash('sonata_flash_info', $nonRelevantMessage);
return new RedirectResponse($this->admin->generateUrl('list', array('filter' => $this->admin->getFilterParameters())));
}
$askConfirmation = isset($batchActions[$action]['ask_confirmation']) ? $batchActions[$action]['ask_confirmation'] : true;
if ($askConfirmation && $confirmation != 'ok') {
$actionLabel = $batchActions[$action]['label'];
$formView = $datagrid->getForm()->createView();
return $this->render($this->admin->getTemplate('batch_confirmation'), array('action' => 'list', 'action_label' => $actionLabel, 'datagrid' => $datagrid, 'form' => $formView, 'data' => $data, 'csrf_token' => $this->getCsrfToken('sonata.batch')));
}
// execute the action, batchActionXxxxx
$finalAction = sprintf('batchAction%s', ucfirst($camelizedAction));
if (!method_exists($this, $finalAction)) {
throw new \RuntimeException(sprintf('A `%s::%s` method must be created', get_class($this), $finalAction));
}
$query = $datagrid->getQuery();
$query->setFirstResult(null);
$query->setMaxResults(null);
$this->admin->preBatchAction($action, $query, $idx, $allElements);
if (count($idx) > 0) {
$this->admin->getModelManager()->addIdentifiersToQuery($this->admin->getClass(), $query, $idx);
} elseif (!$allElements) {
$query = null;
}
return call_user_func(array($this, $finalAction), $query);
}
示例5: getCurrentAdminLocale
/**
* returns the locale of the current admin user
*
* @param \Sonata\AdminBundle\Admin\AdminInterface $admin
* @return mixed|string
*/
public function getCurrentAdminLocale(\Sonata\AdminBundle\Admin\AdminInterface $admin)
{
$locale = '';
if (!$admin->hasRequest()) {
$admin->setRequest($this->getService('request'));
}
if ($subject = $admin->getSubject()) {
return $this->getFieldValue($subject, 'locale');
} elseif ($filter = $admin->getDatagrid()->getFilter('locale')) {
/** @var \Sonata\AdminBundle\Filter\Filter $filter */
$data = $filter->getValue();
if (!$data || !is_array($data) || !array_key_exists('value', $data)) {
$locale = $this->getCurrentLocale();
}
$data['value'] = trim($data['value']);
if (strlen($data['value']) > 0) {
$locale = $data['value'];
}
if (!$locale && method_exists($admin, 'getDefaultLocale')) {
$locale = $admin->getDefaultLocale();
}
}
return $locale;
}