我正在使用Doctrine的QueryBuilder来构建查询,我想从查询中获得结果的总数.
$repository = $em->getRepository('FooBundle:Foo');
$qb = $repository->createQueryBuilder('n')
->where('n.bar = :bar')
->setParameter('bar', $bar);
$query = $qb->getQuery();
//this doesn't work
$totalrows = $query->getResult()->count();
Run Code Online (Sandbox Code Playgroud)
我只想对此查询运行计数以获取总行数,但不返回实际结果.(在此计数查询之后,我将使用maxResults进一步修改查询以进行分页.)
当用户点击DIV时,如何突出显示/选择DIV标签的内容......我们的想法是突出显示/选择所有文本,这样用户就不需要用鼠标手动突出显示文本了错过了一些文字?
例如,假设我们有一个DIV如下:
<div id="selectable">http://example.com/page.htm</div>
Run Code Online (Sandbox Code Playgroud)
...当用户点击任何该URL时,整个URL文本都会突出显示,以便他们可以轻松地在浏览器中拖动所选文本,或者通过右键单击复制完整的URL.
谢谢!
好的,这是一个新手问题,但我无法在任何地方找到答案.在Symfony2的控制器中,我想从我的一个表单中访问POST值.在控制器中我有:
public function indexAction()
{
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form = $this->get('form.factory')->create(new ContactType());
$form->bindRequest($request);
if ($form->isValid()) {
$name_value = $request->request->get('name');
Run Code Online (Sandbox Code Playgroud)
不幸的$name_value是没有退货.我究竟做错了什么?谢谢!
我正在学习Symfony2(和OOP)并希望创建一个可在我的应用程序中使用的服务.此服务获取值foo,根据数据库表进行检查,并返回值栏.
我有一个小班
namespace Acme\TestBundle\Toolbox;
class StringToolbox
{
public function lookupSomething($foo)
{
$conn = $this->get('database_connection');
$sql = "SELECT bar FROM bar_list WHERE foo = :foo";
$stmt = $conn->prepare($sql);
$stmt->bindValue("foo", $foo);
$stmt->execute();
return $bar;
}
}
Run Code Online (Sandbox Code Playgroud)
我的设置是:
services:
toolbox:
class: Acme\TestBundle\Toolbox
arguments: [@database_connection]
Run Code Online (Sandbox Code Playgroud)
但它抛出一个错误,说get()方法是未定义的.我被困了 - 我怎么能在服务中使用DBAL?谢谢!
有没有办法在Symfony2中设置基于主机名的路由?
我在官方文档中没有找到关于这个主题的任何内容.
http://symfony.com/doc/2.0/book/routing.html
我想根据给定的主机名路由请求:
foo.example.com
bar.example.com
{{subdomain}}.example.com
所以从本质上讲,控制器会将当前子域作为参数传递.
与Zend解决方案类似:http:
//framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.hostname
$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
':username.users.example.com',
array(
'controller' => 'profile',
'action' => 'userinfo'
)
);
$plainPathRoute = new Zend_Controller_Router_Route_Static('');
$router->addRoute('user', $hostnameRoute->chain($plainPathRoute));
Run Code Online (Sandbox Code Playgroud)
我希望这是可能的,我只是错过了它.
提前致谢!
我在我的Controller中动态加载不同的表单类并在我的模板中显示它们.这很好,除了Symfony2文档显示手动将模板的路由添加到模板中.
<form action="{{ path('task_new') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
我需要在FormBuilder类中设置该表单操作 - POST路由(例如'task_new')根据我正在使用的表单类而不同.有没有办法在FormBuilder类中设置表单操作URL?我们怎样才能获得{{form_widget(form)}}来呈现完整的表单,而不仅仅是行?谢谢!
这应该很简单,但我找不到一个有效的例子.这是一个控制器方法,它抛出错误"无效的参数号:绑定变量的数量与令牌的数量不匹配".我成功发布了"searchterm"变量,但无法使查询生效.缺什么?谢谢!
public function searchAction()
{
$request = $this->getRequest();
$searchterm = $request->get('searchterm');
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery("SELECT n FROM AcmeNodeBundle:Node n WHERE n.title LIKE '% :searchterm %'")
->setParameter('searchterm', $searchterm);
$entities = $query->getResult();
return array('entities' => $entities);
}
Run Code Online (Sandbox Code Playgroud) 我正在向Symfony2项目添加自定义验证查询.
文档缺少一个完整的示例,我不确定如何将数据库连接实际注入Validator类.我在我的配置中创建了服务,在我的Constraint类中添加了validatedBy别名方法,并在我的Validator类中设置了它:
use Doctrine\DBAL\Connection;
class ZipDatabaseValidator extends ConstraintValidator
{
/**
*
* @var Connection
*/
private $connection;
public function __construct(Connection $dbalConnection) {
$this->connection = $dbalConnection;
}
public function validate($zipcode, Constraint $constraint)
{
$sql = 'SELECT * FROM zip_table WHERE zip_code = ?';
$stmt = $this->connection->prepare($sql);
...
Run Code Online (Sandbox Code Playgroud)
这是我的服务配置:
validator.node.zip_in_database:
class: Acme\Bundle\Validator\Constraints\ZipDatabaseValidator
arguments: [@database_connection]
tags:
- { name: validator.constraint_validator, alias: zip_in_database }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我不断收到错误:
可捕获的致命错误:传递给Acme\Bundle\Validator\Constraints\ZipDatabaseValidator :: __ construct()的参数1必须是Doctrine\DBAL\Connection的实例,没有给出,
我是如何将其设置为服务或以其他方式注入数据库连接?
PhpStorm似乎不承认我的任何Doctrine实体类或它们的方法.
$comment = $em->getRepository('MyBundle:Comment')->findOneBy(array('id' => $id));
$comment->getId();
/* PHPSTORM THROWS WARNING: Method getId() not found in subject class */
Run Code Online (Sandbox Code Playgroud)
只有当我明确地评论它时,错误才会消失 - 这真的使我的控制器变得混乱.
/* @var \MyBundle\Entity\Comment $comment */
$comment = $em->getRepository('MyBundle:Comment')->findOneBy(array('id' => $id));
Run Code Online (Sandbox Code Playgroud)
有没有办法在我的实体类中为PhpStorm记录这个?
我正在使用PhmStorm 8的Symfony2插件.谢谢!
嗨,我正在使用 php 邮件程序 Swiftmailer 使用 SMTP API 通过 SendGrid 发送。我们可以将唯一参数传递给 SendGrid 以帮助跟踪电子邮件。我已经成功地使用 Swiftmailer 传递了独特的标头:
$headers = $message->getHeaders();
$headers->addTextHeader('AccountId', $accountId);
Run Code Online (Sandbox Code Playgroud)
虽然这些值已成功注入到已发送电子邮件的标头中,但 SendGrid 不会将它们传回我的事件 webhook 或控制面板中。
我也试过这个,这也不起作用:
$headers = $message->getHeaders();
$args = ' {
"customerAccountNumber": "55555",
"activationAttempt": "1",
"New Argument 1": "New Value 1",
"New Argument 2": "New Value 2",
"New Argument 3": "New Value 3",
"New Argument 4": "New Value 4"
}';
$headers->addTextHeader('unique_args', $args);
Run Code Online (Sandbox Code Playgroud)
这可能是 SendGrid 支持的问题,但由于它与 Swiftmailer 相关,我想我会先在这里尝试。谢谢!
symfony ×8
php ×3
doctrine ×2
doctrine-orm ×2
css ×1
dql ×1
http-post ×1
javascript ×1
phpstorm ×1
routing ×1
sendgrid ×1
swiftmailer ×1