从控制器内部获取根应用程序目录的最佳方法是什么?是否有可能将其置于控制器之外?
现在我通过将它(从参数)传递给服务作为参数得到它,如下所示:
services:
sr_processor:
class: Pro\Processor
arguments: [%kernel.root_dir%]
Run Code Online (Sandbox Code Playgroud)
是否有更好,更简单的方法在Symfony2中获取此信息?
这应该很简单,但我找不到一个有效的例子.这是一个控制器方法,它抛出错误"无效的参数号:绑定变量的数量与令牌的数量不匹配".我成功发布了"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) 我正在尝试从 Symfony 4 中的实体创建数据库。但是结果是:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
Run Code Online (Sandbox Code Playgroud)
我知道这是因为它试图使用 utf8mb4 字符集和 utf8mb4_unicode_ci 排序规则。我已经尝试将我的 Doctic.yaml 文件替换为 utf8 和 utf8_unicode_ci 以及:
@ORM\Table(name="users", options={"collate"="utf8_unicode_ci", "charset"="utf8", "engine"="MyISAM"})
Run Code Online (Sandbox Code Playgroud)
但它仍在尝试使用 utf88mb4。如何强制它使用 utf8?
在Symfony 4中使用autowire时,我使用了这个工作代码:
App\:
resource: '../src/*'
exclude: '../src/{Domain,Entity,Migrations,Tests}'
Run Code Online (Sandbox Code Playgroud)
该代码从自动装配中排除了所有这些文件夹:
- src/Domain
- src/Entity
- src/Migrations
- src/Tests
Run Code Online (Sandbox Code Playgroud)
没关系,但是当我想要排除多个分散在另一个文件夹中的同名文件夹时,就会出现问题.
例如,如果我们有这个结构:
¿有没有办法排除名为FolderToExclude的所有文件夹?
我已经尝试了以下代码,但有一些小的变化:
App\:
resource: '../src/*'
exclude: '../src/{Domain,Entity,Migrations,Tests,**/FolderToExclude}'
Run Code Online (Sandbox Code Playgroud)
但它不起作用:(
我在routing.yml文件中定义了一个路由:
route_name:
path: "/dashboard#messages/{id}"
Run Code Online (Sandbox Code Playgroud)
但是,当我要求Symfony生成该路线时,我得到:
/dashboard%23messages/12345
Run Code Online (Sandbox Code Playgroud)
如何跳过路由生成的编码部分?或者我如何#在路径定义中转义char?
PS:使用(大)遗留系统,我无法更改网址.
我有一个$newsList包含以下值的 ID 数组 ( ):4,2,1,3。
我正在尝试从实体的数据库中获取一些数据:
$news=$this->getDoctrine()->getRepository('Bundle:News')->findBy(array('id' => $newsList));
Run Code Online (Sandbox Code Playgroud)
$newsList数组代表新闻实体的真实 ID。
但是当我这样做时:
foreach($news as $n){
$n->getId();
}
Run Code Online (Sandbox Code Playgroud)
ID 按顺序排列:1,2,3,4。
如何在 foreach 中保留从头开始的顺序?
我创建了一个种子服务器,用于在数据库中插入默认值。
如果我多次运行此播种机,则mysql返回重复密钥错误,
所以我的问题是,处理此错误的最佳方法是什么?以及如何继续运行其他种子?
我开始玩symfony4。我刚刚创建了新的应用程序并创建了新的LuckyController。它与以这种方式配置的route.yaml一起使用:
lucky:
path: /lucky/number
controller: App\Controller\LuckyController::number
Run Code Online (Sandbox Code Playgroud)
使用以下控制器:
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
class LuckyController
{
public function number()
{
return new Response('<html><head></head><body>' . rand(111, 999) . '</body></html>');
}
}
Run Code Online (Sandbox Code Playgroud)
但是我想使用注释。所以我决定评论routes.yaml。以下文档解释了如何在symfony中创建路由,我已经做到了:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class LuckyController extends Controller
{
/**
* @Route("/lucky/number")
*/
public function number()
{
return new Response('<html><head></head><body>' . rand(111, 999) . '</body></html>');
}
}
Run Code Online (Sandbox Code Playgroud)
我需要计算子查询中返回的项目数.如果我写子查询如何DQL - 一切都很好,但如果我尝试通过QueryBuilder构建一个查询 - 我得到一个错误.
子查询DQL:
$qb3 = $this->createQueryBuilder('c')
->select('COUNT(c.id)')
->where('c.id IN (SELECT cl.id FROM Acme\AppBundle\Entity\ClassC cl INNER JOIN Acme\AppBundle\Entity\ClassP p WHERE p.var1 = :var1 AND p.var2 = cl.id GROUP BY cl.id)')
->setParameter('var1', $var);
Run Code Online (Sandbox Code Playgroud)
通过QueryBuilder的子查询:
$qb = $this->createQueryBuilder('c');
$qb->select('COUNT(c.id)')
->where(
$qb->expr()->in(
'c.id',
$this->createQueryBuilder('cl')
->select('cl.id')
->innerJoin('Acme\AppBundle\Entity\ClassP', 'p')
->where('p.var1 = :var1')
->setParameter('var1', $var)
->andWhere('p.var2 = cl.id')
->groupBy('cl.id')
->getDQL()
)
);
Run Code Online (Sandbox Code Playgroud)
两个版本都返回相同的DQL.
错误: 屏幕
我想根据用户获得的点数(this.state.points)显示一些组件Star(material-ui组件).
我不知道该怎么做.
import React, { Component } from "react";
import { Star } from "@material-ui/icons";
Points extends Component {
constructor(props) {
super(props);
this.state = {
points: 6
};
}
render() {
return (
<div>
<p>
+ {this.state.points} points
<Star />
</p>
</div>
);
}
}
export default Points;
Run Code Online (Sandbox Code Playgroud) 我需要获取symfony 2.7实体内的表的最大ID.但我没有得到这个问题,而是得到了这个问题.
注意:未定义的属性:AppBundle\Entity\BlogPost :: $ container
这是我的BlogPost实体,
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* BlogPost
*
* @ORM\Table()
* @ORM\Entity
*/
class BlogPost {
const SERVER_PATH_TO_IMAGE_FOLDER = '/uploads';
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @var string
*
* @ORM\Column(name="body", type="text")
*/
private $body;
/**
* @var string
*
* @ORM\Column(name="filename", type="text")
*/
private …Run Code Online (Sandbox Code Playgroud) 我将我的网站从Symfony 3.4更新到Symfony 4,并做了一些更改。但是知道我有这个错误:
您请求的服务“ D”不存在。
这是我的堆栈跟踪:
Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException:
You have requested a non-existent service "D".
at vendor\symfony\dependency-injection\Container.php:263
at Symfony\Component\DependencyInjection\Container->get('D')
(vendor\symfony\routing\Loader\DependencyInjection\ServiceRouterLoader.php:38)
at Symfony\Component\Routing\Loader\DependencyInjection\ServiceRouterLoader->getServiceObject('D')
(vendor\symfony\routing\Loader\ObjectRouteLoader.php:55)
at Symfony\Component\Routing\Loader\ObjectRouteLoader->load('D:\\IIS Websites\\Wizard\\src/config/routing.yml', 'service')
(vendor\symfony\config\Loader\DelegatingLoader.php:40)
at Symfony\Component\Config\Loader\DelegatingLoader->load('D:\\IIS Websites\\Wizard\\src/config/routing.yml', 'service')
(vendor\symfony\framework-bundle\Routing\DelegatingLoader.php:70)
at Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader->load('D:\\IIS Websites\\Wizard\\src/config/routing.yml', 'service')
(vendor\symfony\framework-bundle\Routing\Router.php:56)
at Symfony\Bundle\FrameworkBundle\Routing\Router->getRouteCollection()
(vendor\symfony\routing\Router.php:367)
at Symfony\Component\Routing\Router->getMatcherDumperInstance()
(vendor\symfony\routing\Router.php:289)
at Symfony\Component\Routing\Router->Symfony\Component\Routing\{closure}(object(ResourceCheckerConfigCache))
at call_user_func(object(Closure), object(ResourceCheckerConfigCache))
(vendor\symfony\config\ResourceCheckerConfigCacheFactory.php:43)
at Symfony\Component\Config\ResourceCheckerConfigCacheFactory->cache('D:\\IIS Websites\\Wizard\\var\\cache\\dev/srcDevDebugProjectContainerUrlMatcher.php', object(Closure))
(vendor\symfony\routing\Router.php:302)
at Symfony\Component\Routing\Router->getMatcher()
(vendor\symfony\routing\Router.php:256)
at Symfony\Component\Routing\Router->matchRequest(object(Request))
(vendor\symfony\http-kernel\EventListener\RouterListener.php:109)
at Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest(object(GetResponseEvent), 'kernel.request', object(EventDispatcher))
(vendor\symfony\event-dispatcher\EventDispatcher.php:212)
at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(array(object(DebugHandlersListener), 'configure'), array(object(ValidateRequestListener), 'onKernelRequest'), array(object(SessionListener), 'onKernelRequest'), array(object(FragmentListener), 'onKernelRequest'), array(object(RouterListener), 'onKernelRequest'), array(object(ResolveControllerNameSubscriber), 'onKernelRequest'), array(object(LocaleListener), 'onKernelRequest'), …Run Code Online (Sandbox Code Playgroud) symfony ×10
php ×7
doctrine-orm ×5
symfony4 ×3
doctrine ×2
entity ×2
orm ×2
autowired ×1
controller ×1
dql ×1
eloquent ×1
icons ×1
javascript ×1
laravel ×1
material-ui ×1
migration ×1
mysql ×1
reactjs ×1
service ×1
state ×1
symfony-2.8 ×1
url ×1
utf-8 ×1