让我们说我有一个视图表.我希望从中获取数据到实体.我可以(以及如何)创建实体类来做到这一点.(不需要保存操作).我只想展示它们.
我正在将twig模板引擎集成到PHP应用程序中.特别是,我想使用树枝引擎来渲染表单.
看看symfony2如何使用twig渲染表单小部件,他们有一个巨大的模板文件,其中包含所有小部件,如下所示:
(...)
{% block password_widget %}
{% spaceless %}
{% set type = type|default('password') %}
{{ block('field_widget') }}
{% endspaceless %}
{% endblock password_widget %}
{% block hidden_widget %}
{% set type = type|default('hidden') %}
{{ block('field_widget') }}
{% endblock hidden_widget %}
{% block email_widget %}
{% spaceless %}
{% set type = type|default('email') %}
{{ block('field_widget') }}
{% endspaceless %}
{% endblock email_widget %}
{% block test_widget %}
{% spaceless %}
<div>
{{test}}
<div>
{% endspaceless %}
{% …Run Code Online (Sandbox Code Playgroud) 当我调用loggerservice时,在日志文件中获取此信息消息它是否有效,但是在日志文件中写入此消息:
php.INFO:User不推荐使用:"logger"服务是私有的,从容器中获取它自Symfony 3.2以来就已弃用,并且将在4.0中失败.您应该将服务公之于众,或者直接停止使用容器并改为使用依赖注入.{"exception":"[object](ErrorException(code:0):User弃用:\"logger \"服务是私有的,从Symfony 3.2开始从容器中获取它并在4.0中失败.你应该制作服务公共,或者直接停止使用容器并改为使用依赖注入./home///####PROJECT/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php:275 )"} []
我的symfony版本:3.4.1
到目前为止我采取的步骤:
Fatal error: Class 'Imagick' not found当我尝试运行使用Imagick的脚本时,我仍然收到错误.当前版本:
我运行的是旧版本的PHP,并且Imagick正常工作,然后我更新了PHP(以及Imagick DLL及其),现在我似乎无法让它工作.
看phpinfo( ),我没有看到Imagick在那里列出,所以它似乎根本没有加载模块.这很奇怪,因为我在启动Apache时没有遇到任何错误.
我已经尝试过在Windows上安装Imagick for PHP的每一篇文章和演练,但它们似乎都是为旧版本的PHP编写的.
有人可以帮我安装并运行吗?看起来它只是缺少一个我似乎无法弄清楚的简单步骤.如果您需要更多信息,请询问.我会尽力帮助你.
考虑以下代码:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Car extends Model
{
public static function getTheFirstCar(string $color): ?self
{
/** @var ?self */ // <-- Doesn't apply! Is there any alternative?
return (new self())->newQuery()->firstWhere('color', '=', $color);
}
}
Run Code Online (Sandbox Code Playgroud)
代码工作正常;尽管如此 PhpStorm 抱怨:
返回值应为“
Car|null”,返回
“\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model”
将表达式的结果赋值给一个带注释的变量可以解决警告,但会引入一个“冗余”变量!
/** @var ?self $redundant */
$redundant = (new self())->newQuery()->firstWhere('color', '=', $color);
return $redundant;
Run Code Online (Sandbox Code Playgroud)
那么,在 PhpStorm 中是否有一种方法可以return明确地为语句表达式的值强制执行内联类型注释Car|null,而不引入冗余变量或指定所有预期的返回类型?
我在我的项目中使用 PHP8、Symfony 5.2 和 Doctrine 3.0,但是自Doctrine 2.9以来允许的 PHP 8 属性似乎不起作用。
use Doctrine\ORM\Mapping\Entity;
**
* @Entity(repositoryClass="App\Repository\MyClassRepository")
*/
class MyClass
{
Run Code Online (Sandbox Code Playgroud)
工作正常。
use Doctrine\ORM\Mapping\Entity;
#[Entity(repositoryClass: MyClassRepository::class)]
class MyClass
{
Run Code Online (Sandbox Code Playgroud)
返回[critical] Uncaught PHP Exception Doctrine\ORM\Mapping\MappingException: "Class "App\Entity\MyClass" is not a valid entity or mapped super class." at .../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php line 378
这是我的composer.json:
"composer/package-versions-deprecated": "1.11.99.1",
"doctrine/doctrine-bundle": "^2.3",
"doctrine/doctrine-migrations-bundle": "^3.1",
"doctrine/orm": "^3.0",
"symfony/console": "5.2.*",
"symfony/dotenv": "5.2.*",
"symfony/flex": "^1.3.1",
"symfony/framework-bundle": "5.2.*",
"symfony/proxy-manager-bridge": "5.2.*",
"symfony/yaml": "5.2.*"
Run Code Online (Sandbox Code Playgroud) symfony 新手,我正在尝试开始我的第一个会话
这是我的整个代码位于public/php/session.php:
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
$session = new Session();
$session->start();
Run Code Online (Sandbox Code Playgroud)
我收到错误Uncaught Error: Class 'Symfony\Component\HttpFoundation\Session\Session' not found
phpstorm没有报错,我需要安装模块吗?我尝试过composer require session,但不起作用
handler_id: ~我还尝试了symfony doc 方法config/packages/framework.yaml
使用此方法,不会出现错误消息,但也不会出现会话 cookie
这是我的控制器:
class HomeController extends AbstractController {
// start session
public function index(SessionInterface $session) {
$session->set('foo', 'bar');
$session->get('foo');
}
/**
* @Route("/", name="home")
*/
public function homepage(){
return $this->render('home.html.twig');
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将配置参数放入命令中。
app/config/config.yml我已经在键下添加了参数parameters。
我可以在控制器中使用它$this->getParameter("PRAMETER_NAME")来手动执行一些操作。
我正在编写一个命令来通过 CRON 作业自动执行相同的操作。
我找不到如何获取命令中的参数。
Symfony 控制台进度条不是在同一行上前进,而是在新行上创建
1/2 [==============>-------------] 50%
! [NOTE] No changes made to Categories/CategoriesSchema
2/2 [============================] 100%
2/2 [============================] 100%
Run Code Online (Sandbox Code Playgroud)
我假设进度条只会在同一行上移动,直到操作完成。这是我的代码
$io = new SymfonyStyle($input, $output);
$progressbar = new ProgressBar($output, count($elements));
$progressbar->start();
foreach ($elements as $element) {
//work on element
io->note("No changes made to ".ucfirst($name));
$progressbar->advance();
$io->newLine();
}
$progressbar->finish();
Run Code Online (Sandbox Code Playgroud)
我做错了什么??
我需要在 Centos 7 上尝试 PHP 5.6 和 5.5。因此,我在 PHP 7.1 的完美工作安装之上安装了它们。我按照此处的说明进行操作: https: //www.mojowill.com/geek/howto-install-php-5-4-5-5-or-5-6-on-centos-6-and-centos-7/
基本上,我编辑了 remi repo 配置文件以启用 PHP 5.6 和 5.5 并安装了 PHP 5.6。我测试了我想要测试的内容,并尝试通过禁用存储库并卸载所有 php 然后重新安装来切换回来。现在我遇到了问题。
这是症状和我尝试过的方法。
我收到一条关于 WordPress 安装的消息“ Your PHP installation appears to be missing the MySQL extension which is required by WordPress.”
# php -v
PHP **7.2.14** (cli) (built: Jan 8 2019 14:05:15) ( NTS )
Copyright (c) 1997-2018 The PHP Group
<? phpinfo() ?> works but says php version **7.1.24**
Run Code Online (Sandbox Code Playgroud)
我尝试检查 php-mysql 是否仍然安装:
# yum …Run Code Online (Sandbox Code Playgroud) 我有PhpStorm 2016.2,并且在Shell路径中添加了Cygwin,如下所示: "C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe
它工作正常,但颜色不起作用。对于为例我?[32m Name不是已经Name在绿色。
我尝试了几种方法,例如添加插件Grep Console以支持ANSI Color,但是没有用。
使用具有多种ANSI颜色的线真的很难?[39m ?[32m Scheme ?[39m ?[32m Host ?[39m ?[32m Path。
请随时询问有关该问题的更多信息。谢谢。
PS我在Windows 10上。
编辑
当我/usr/bin/which php在PHPStorm终端中执行操作时,我得到了/cygdrive/d/wamp2/bin/php/php5.6.16/php。我的WAMP中有php5.6.16和php7.0.0,目前正在使用php7.0.0。
编辑2我所以现在添加了php7.0.0一个$ PATH我有/cygdrive/d/wamp2/bin/php/php7.0.0/php,当我做/usr/bin/which php。但是主要问题仍然存在。
我最近用一个简单的控制器构建了一个新的 symfony 项目,用于读取 .csv 文件并将其内容输出到模板。我使用控制台生成了包和控制器,并为控制器提供了路由“/browse”。尝试运行时,(127.0.0.1:8000/browse) 它告诉我:“找不到用于“GET/browse”的路由”。
src/OpiumBundle/Controller/BrowseController.php
<?php
namespace OpiumBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BrowseController extends Controller {
/**
* @Route("/browse")
*/
public function indexAction() {
$varPath = $this->get('kernel')->getRootDir().'/../var';
return $this->render('OpiumBundle:Browse:index.html.php', array(
// ...
));
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序/配置/routing.yml
opium:
resource: "@OpiumBundle/Resources/config/routing.yml"
prefix: /
app:
resource: '@AppBundle/Controller/'
type: annotation
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法发布 debug:console 的输出,因为我的代表太低了。但有两个空位我猜他们不应该:
调试:路由器
opium_homepage ANY ANY ANY /
homepage ANY ANY ANY /
Run Code Online (Sandbox Code Playgroud) 在 Symfony 4 项目中,是否有一种正确的/symfony 方法可以从 Fixture 类中获取根路径目录?
最终目标:
当我部署我的网站时,我使用fixtures 类在我的数据库中加载一些“默认”数据。(可能这不是一个好习惯)
在这些默认数据中,我需要存储项目的根路径目录,因为我需要来自项目中自定义 utils 和服务类的这些信息。
我知道有多种方法可以做到这一点。目前,我对绝对路径进行了硬编码(<= 有史以来最丑陋的方式;))