这是我的saveAction代码(表单传递数据的地方)
public function saveAction()
{
$user = OBUser();
$form = $this->createForm(new OBUserType(), $user);
if ($this->request->getMethod() == 'POST')
{
$form->bindRequest($this->request);
if ($form->isValid())
return $this->redirect($this->generateUrl('success_page'));
else
return $this->redirect($this->generateUrl('registration_form'));
} else
return new Response();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果$form->isValid()返回,我如何得到错误false?
我们有一个社交网站,人们有联系,我们希望它与XMPP集成.我们目前使用ejabberd XMPP服务器.
这是我的问题:
如何正确创建帐户?现在,我正在考虑的是我们的网络应用程序上的用户注册,我们调用一个脚本来执行ejabberd命令来创建用户.
用户认证.用户在我们的网站上登录后,用户将自动登录聊天系统.你如何使用strophe.js在客户端执行此操作?据我所知,你需要提供JID和密码进行身份验证,所以我想在登录时会有一个ajax调用来获取用户的密码,然后在strophe.js的登录调用中使用响应文本.这样安全吗?还有其他方法吗?
在线注册.我们的网络应用程序有一个联系人系统,但XMPP有自己的方式通过在线订阅添加联系人,对吧?示例:当user1尝试添加user2时,在user1可以成为user2的联系人之前,将向user2询问授权.但由于我们的Web应用程序上已有联系人系统,因此我们希望绕过XMPP的此授权或禁止它,并在user2确认user1为我们网站上的联系人时使用脚本/命令进行授权.我还不清楚,但是一位同事说这可以在ejabberd的模块mod_admin_extra上实现(这个命令将创建订阅而无需客户端授权).是否有可能或者我必须使用脚本手动操作ejabberd数据库(前提是我从默认的Mnesia数据库转移到另一个数据库,比如MySQL).
提前致谢.
我们有一个网站,我们使用strophe.js库和ejabberd XMPP服务器为它开发了一个聊天系统.我们使用由PHP启动的会话附件(使用内部库).我们所做的是从PHP脚本中获取RID和SID,然后使用strophe的会话附件.所述RID和SID存储在cookie上,并且每次更新strophe.js上的RID时,cookie上的RID值都会更新.(这样我们就可以在页面刷新/导航上重用会话ID到网站上的其他地方)
我们现在计划让它在多个选项卡/窗口上运行.我观察了Facebook的实现,并且对于每个选项卡,对某个域都有一个很长的轮询请求.每个选项卡的域名都不同.例如,选项卡一将是0.86.channel.facebook.com.第二个标签是1.86.channel.facebook.com.据我所知,这是解决浏览器限制2个活动请求到某个域.这个多域解决方案是如何实现的?
接下来将是聊天会话本身.每个标签的聊天会话会有所不同吗?UI如何与Facebook等每个标签同步?我的想法是,根据每个操作,将向用户自己的JID发送一条消息,其中包含与聊天相关的操作.例如,打开聊天窗口会发送一个消息节,如下所示:
<message from="my_own_jid" to="my_own_jid" type="chat">
<body>{"jid-of-contact":"open-chat-box"}</body>
</message>
Run Code Online (Sandbox Code Playgroud)
这将被捕获在聊天客户端上,UI将相应调整(在这种情况下,打开联系人的聊天框).
有关此实施的任何建议/意见?
谢谢!
我们有一个网站,并使用 strope.js 库和 ejabberd XMPP 服务器为其开发了一个聊天系统。我们使用通过 PHP 启动的会话附件(使用内部库)。我们所做的就是从 PHP 脚本中获取 RID 和 SID,然后使用 strope 的会话附件。所述 RID 和 SID 存储在 cookie 中,每次 strope.js 上的 RID 更新时,cookie 上的 RID 值都会更新。
这工作正常,登录后我们会收到每个联系人的在线状态。这样做的问题是,当您转到站点上的另一个页面并使用所述 RID(我们使用 strope 生成的增量值)和 SID 进行附加时,服务器将不再发送您的联系人的状态信息,而不是当您登录时。这导致我们的联系人区域显示为完全不可见,即使他们在线。仅当您(或您的联系人)注销聊天然后再次登录时,它们才会在线显示(因为您将从 XMPP 服务器收到状态更新)。
我编写了一种解决方法,当从服务器接收到在线状态时,您的联系人的在线状态将保存在 cookie 中(所有在线联系人的 JID 都会保存在 cookie 中)。每次页面加载时都会检查此功能,如果设置了 cookie,则会读取该 cookie,并且 cookie 上的所有 JID 将被标记为在线。这工作正常,但可能有一些更好的方法来解决这个问题,使用 XMPP 的默认行为。
我有一个叫做的表Billing,它基本上是一个收据(用于不同类型的交易).该应用程序具有一项功能,您可以创建新的费用(除税和其他常量以外的所有费用).由于会有一定数量的动态费用,我们决定将结算费用存储在具有JSON结构的单个文本字段中.所以该Charges列包含这样的东西:
{"CrateFee":50,"DeliveryFee":90,"PackagingFee":20}
{"DeliveyFee":90,"ServiceCharge":200}
Run Code Online (Sandbox Code Playgroud)
我们的替代方案是为这些费用创建一个单独的表格,具有以下结构:
Charges
BillingId | ChargeName | ChargeValue
1 CrateFee 50
1 DeliveryFee 90
1 PackagingFee 20
2 DeliveryFee 90
2 ServiceCharge 200
Run Code Online (Sandbox Code Playgroud)
我们决定采用第二种方法,因为它会在一天内被数万行填充(估计一天内有大约一千笔交易).我知道如果我们使用第一个数据,我们将对数据的处理能力有限,所以我真的想推动单独的表方法.但是当我谈到数据库时,我不知道扩展,优化等等,所以我需要一些帮助.
可以使用第二种方法吗?这将如何影响性能?还有其他选择吗?