我需要在登录检查后禁用重定向,因为我只需要获取登录成功与否.提交/ login_check后url给我正确的数据,但保持重定向到/ login(失败时).
之后/ login是空白的.
我正在尝试使用extjs 4设置登录表单,所以我需要通过ajax post请求来验证.login_check应该进行身份验证,创建用户会话并返回它是成功还是失败,但不在任何地方转发.
我的login.html.twig看起来像:
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
{ success:true }
{% else %}
{ success: false }
{% endif %}
Run Code Online (Sandbox Code Playgroud)
并在security.yml:
firewalls:
main:
form_login:
provider: fos_userbundle
failure_path: null
failure_forward: false
Run Code Online (Sandbox Code Playgroud) 是否可能(以及如何)
我喜欢做的是,在不修改任何控制器的情况下加载不同的模板.
UPDATE
这不是检测部分真正的问题,它与symfony无关.它可以在控制器级别上完成(加载不同的模板):
public function indexAction()
{
$format = $this->isMobile() ? 'mob' : 'html';
return $this->render('AcmeBlogBundle:Blog:index.'.$format.'.twig');
}
Run Code Online (Sandbox Code Playgroud)
但它可以在全球范围内完成吗?就像服务,或者在每个请求之前执行的东西,并在模板规则中进行更改.
让我们说我有一个视图表.我希望从中获取数据到实体.我可以(以及如何)创建实体类来做到这一点.(不需要保存操作).我只想展示它们.
我有一个异步函数,我希望在失败时抛出异常.但似乎有些事情阻止了这个:
通过省略try catch块,我希望抛出一个异常,我想在函数之外处理.
我得到的实际结果有点令人困惑:
(node:10636) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): E11000 duplicate key error index.
(node:10636) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
async f(obj) {
await db.collection('...').save(obj);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试捕获异常并抛出其他内容时,我得到相同的结果:
async f(obj) {
try {
await db.collection('...').save(obj);
} catch(e) {
throw e.message;
}
}
Run Code Online (Sandbox Code Playgroud)
该函数是从try块调用的,所以不要看这是一个Unhandled Promise.
我想f用作另一个函数的参数:
g(obj, handler) {
try {
handler(obj);
} catch(e);
...
}
} …Run Code Online (Sandbox Code Playgroud) 我有2个实体:
/**
* @ORM\Entity
* @ORM\Table(name="users")
*/
class User
{
/**
* @ORM\ManyToMany(targetEntity="Myapp\UserBundle\Entity\Group")
* @ORM\JoinTable(name="user_groups",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
* )
*/
protected $groups;
...
}
Run Code Online (Sandbox Code Playgroud)
和
/**
* @ORM\Entity(repositoryClass="Myapp\UserBundle\Repository\GroupRepository")
* @ORM\Table(name="groups")
*/
class Group
...
Run Code Online (Sandbox Code Playgroud)
我找不到一种方法来创建一个DQL查询,结果如下:
SELECT g.name, g.id, count( u.id )
FROM users u
LEFT JOIN user_groups ug ON u.id = ug.user_id
RIGHT JOIN groups g ON g.id = ug.group_id
GROUP BY g.id
Run Code Online (Sandbox Code Playgroud)
我试过并失败了:
$this->getEntityManager()
->createQuery('
SELECT g.id, g.name, count(u.id) as usercount FROM MyappUserBundle:User u
JOIN …Run Code Online (Sandbox Code Playgroud) 我在一开始就与ext js 4叠加.我试图在使用商店启动应用程序时获取当前用户数据.但我没有从商店获得任何数据,甚至store.count返回0.我发现很多描述如何创建商店,但不知道如何访问其中的数据.
我设法使用Ext ajax请求获取数据,但我认为使用商店会更好,我不能避免它们..
我的模特:
Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
fields: [
'id',
'username',
'email'
]
});
Run Code Online (Sandbox Code Playgroud)
我的商店看起来像:
Ext.define('MyApp.store.User.CurrentUser', {
extend: 'Ext.data.Store',
requires: 'MyApp.model.User',
model: 'MyApp.model.User',
autoLoad: true,
proxy: {
type: 'ajax',
method: 'POST',
url: Routing.generate('admin_profile'),
reader: {
type: 'json',
root: 'user'
}
}
});
Run Code Online (Sandbox Code Playgroud)
返回的json:
{
"success":true,
"user":[{
"id":1,
"username":"r00t",
"email":"root@root.root"
}]
}
Run Code Online (Sandbox Code Playgroud)
和申请:
Ext.application({
name: 'MyApp',
appFolder: '/bundles/myadmin/js/app',
models: ['MyApp.model.User'],
stores: ['MyApp.store.User.CurrentUser'],
//autoCreateViewport: true,
launch: function() {
var currentUser=Ext.create('MyApp.store.User.CurrentUser',{});
/*
Ext.Ajax.request({
url : Routing.generate('admin_profile'),
method: 'POST',
success: function(resp) …Run Code Online (Sandbox Code Playgroud) 我有一个tabpanel,它是表单的一部分(输入字段在不同的选项卡上).如果表单包含无效字段,即使它们不在当前选项卡上,我也需要通知用户提交.我认为最好的方法是更改标签颜色.
问题是如何在不引入新ID的情况下获取选项卡按钮的参考?
这是我试图做的事情,因为我引用了标签内部主体,并且还有一个直到整个标签面板
...
xtype:'tabpanel',
plain:true,
activeTab: 0,
height:190,
margin: '10 0 0 0',
items: [{
title: 'Personal',
layout:'column',
border:false,
items:[{
columnWidth:.5,
border:false,
layout: 'anchor',
defaultType: 'textfield',
items: [{
fieldLabel: 'Email',
name: 'user[email]',
allowBlank: false,
listeners: {
'validitychange': function(th, isvalid, eOpts) {
if(!isvalid) {
alert(this.up().up().getId());
};
}
},
vtype:'email',
anchor:'95%'
}]
}]
}]
Run Code Online (Sandbox Code Playgroud) 我创建了一个包来管理用户组权限.我希望它通过将项目移动到供应商目录来使项目独立.
为了使这个包不可变,我将用户数据移动到usermeta包中.
主捆绑包含有关用户的用户名和电子邮件,而usermeta包含其他所有内容(名称,生日等,无论项目需要什么).
问题是主要用户捆绑包意图属于核心捆绑组,每个项目使用相同的捆绑组.
user-usermeta关系现在创建了一个依赖项.所以每个项目都需要它.
我的问题是
- 我如何标准化其格式,在每个项目中强制执行它.
- 如何使此依赖项可选(首选)
我需要使用特定于每种数据类型的过滤器呈现未知类型的数据:
渲染的结构看起来像:
array(
"value" => "value-to-render",
"filter" => "filter-to-apply",
)
{% for item in items %}
{{ item.value|item.filter|raw}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如何使用item.filter作为值的过滤器?
我有休闲的表单结构:
abstract class BaseContentType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
//common fields
}
public function getDefaultOptions() {
return array(
'translation_domain' => 'MyBaseBundle',
'isNew' => false,
);
}
}
class SpecializedContentType extends BaseContentType {
public function buildForm(FormBuilderInterface $builder, array $options) {
parent::buildForm($builder, $options);
//more fields....
}
public function getName() {
return 'specialized_content';
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$options = $this->getDefaultOptions() + array(
'data_class' => 'whatever\Entity\Specialized',
);
$resolver->setDefaults($options);
}
}
Run Code Online (Sandbox Code Playgroud)
对于BaseContentType和每个子类,我需要具有不同的转换域。
如何为类及其父级添加单独的翻译域?
symfony ×7
php ×4
doctrine ×2
doctrine-orm ×2
extjs ×2
extjs4 ×2
javascript ×2
twig ×2
async-await ×1
dql ×1
forms ×1
mobile ×1
mysql ×1
node.js ×1