【问题标题】:Sonata FormMapper adding link from integer fieldSonata FormMapper 从整数字段添加链接
【发布时间】:2017-03-22 16:37:51
【问题描述】:

试图向表格行添加一个元素,该元素是表格中的一个 ID,其定义为整数。当我将它添加到 FormMapper 时,它显示为整数字段。我想将其显示为一个按钮以在另一个页面上编辑该位置。

这是 MB/SiteBundle/Admin/LocationAdmin.php 的 sn-p

protected function configureFormFields(FormMapper $formMapper)
{
 $id = $this->getSubject()->getId(); 

 $options = array('required' => false);
 $options['help'] = '<a href="/admin/mb/site/location/' . $id. '/edit">';

$formMapper
  ->add('year')
  ->add('duns_number')
  ->add('address_1')
  ->add('address_2')
  ->add('city')
  ->add('state')
  ->add('zip')
  ->add('type')
  ->add('isPrimary', null, array('required' => false))
  ->add('numEmployees')
  ->add('numCoveredEmployees')
  ->add('benefitOption')
  ->add('freeformBenefit1', null, array('label' => "benefit_4c_description"))
  ->add('freeformBenefit2', null, array('label' => "benefit_4c_whyappropriate"))

  ->add('id', null, $options)
  ->end()

  ->with('Contact Info')
    ->add('cbc', 'sonata_type_admin', array('delete' => false, 'label' => false, 'required' => false, 'btn_add' => false))
  ->end()
  ;
}

下面是 MB/SiteBundle/Entity/Location.php 的 sn-p

/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

在行表的最后一个 td 上,希望在我所说的帮助属性上看到指向位置页面的链接。谢谢

【问题讨论】:

  • 有人知道吗?

标签: php mysql entity sonata-admin


【解决方案1】:

呈现按钮很简单,但它会触发您的表单,而不是重定向到新页面(后者会破坏用户体验,因为按钮是号召性用语,而不是链接)。

使用自定义按钮

您需要创建一个自定义 FormType 并呈现您的自定义按钮(作为&lt;a/&gt;,而不是&lt;button/&gt;)。然后您可以轻松设置所需的 URL 并呈现它。

使用内置行为

另一种方式(如果实体彼此认识并且有为其注册的管理员):使用sonata_type_model_list

$formMapper
    ->add('location', 'sonata_type_model_list', array('btn_add' => false, 'btn_delete' => false);

这不会呈现按钮,但会呈现 Sonata 的列表元素以供参考,也可单击。

【讨论】:

    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多