【问题标题】:How I get the user_id value in sfDoctrineGuard plugin?如何在 sfDoctrineGuard 插件中获取 user_id 值?
【发布时间】:2013-06-13 18:01:02
【问题描述】:

我正在开发一个基于 sfGuard 的模块,我需要允许用户编辑或删除记录。这就是我获得用户的方式:

$id_empresa = $this->getUser()->getGuardUser()->getSfGuardUserProfile()->getIdempresa();
$this->users = Doctrine_Core::getTable('sfGuardUser')->createQuery('u')->leftJoin('u.SfGuardUserProfile p')->where('idempresa = ?', $id_empresa)->execute();

但是在我迭代的视图中,我不知道如何访问user_id 值。我检查了BasesfGuardUser,但没有获取 ID 的方法,有什么建议或帮助吗?

为视图添加代码 这是迭代的代码:

<?php foreach ($users as $user): ?>
    <tr>
       <td><?php echo $user->getFirstName() ?></td>
       <td><?php echo $user->getLastName() ?></td>
       <td><?php echo $user->getEmailAddress() ?></td>
       <td><?php echo $user->getUsername() ?></td>
       <td><?php echo $user->getIsActive() ?></td>
       <td>
          <a href="<?php echo url_for('guard/users/' . $user->get('id') . '/edit') ?>" class="btn btn-success btn-mini">Editar</a>
          <a href="<?php echo url_for('guard/users/' . $user->get('id')) ?>" class="btn btn-danger btn-mini">Eliminar</a>
       </td>
    </tr>
<?php endforeach; ?>

【问题讨论】:

  • foreach ($users as $user) var_dump($user-&gt;get('id'))
  • @1ed,不,不起作用
  • 应该可以工作(也许idempresa 是id 列的名称?),但是尝试$user-&gt;getPrimaryKey() 然后......如果你想生成URL,你应该使用路由名称和对象作为参数,如url_for('sf_gaurd_user_edit', $user);php symfony app:routes backend查看可用路线
  • @1ed ups 道歉人,两者都有效我的意思是你离开的第一个解决方案和基于getPrimaryKey() 的第二个解决方案,问题就在这里:&lt;a href="&lt;?php echo url_for('usuarios/edit/' . $user-&gt;get('id') ) ?&gt;" class="btn btn-success btn-mini"&gt;Editar&lt;/a&gt; 为什么值不附加到网址?
  • 不用担心 :)... 我在尝试解释问题的地方添加了一个答案。

标签: symfony1 symfony-1.4 sfdoctrineguard


【解决方案1】:

问题在于url_for 中的'guard/users/' . $user-&gt;get('id') . '/edit' 部分。也许是因为usuarios/edit/1 不是url_for 的有效参数所以它被解析为module/action 并且/1 部分被忽略了,但我不确定。

IIRC url_for 实际上有 4 个有效形式:

  • url_for('module/action', array('param1' =&gt; 'value1'), true /* absolute */)
  • url_for('@route_name?param1=value1', true /* absolute */)
  • url_for('route_name', array('param1' =&gt; 'value1'), true /* absolute */)
  • 这仅适用于对象路由:url_for('route_name', $object, true /* absolute */)url_for('route_name', array('sf_subject' =&gt; $object, 'extra_param' =&gt; 'value'), true /* absolute */)

如果你有一个对象路由(例如sfDoctrineRoute),你应该使用最后一个,如果你有一个带参数的非对象路由,你应该使用第三个,如果你有一个没有参数的路由,你应该使用第二个。

【讨论】:

  • 谢谢,我想办法解决这个问题并把事情做好
猜你喜欢
  • 2020-11-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多