小编Ale*_*ant的帖子

如何在Symfony4结构的参数文件中检索环境变量?

我使用Symfony Flex进行了新的Symfony安装,新的骨架属于下一个Symfony 4目录结构.

我添加并配置了第一个第三方软件包:HWIOAuthBundle.该捆绑包用于通过Twitter使用两个秘密信息进行连接.

consumer_idconsumer_secretconfig/packages/hwi_oauth.yaml文件中声明我和我的.

hwi_oauth:
    firewall_names: [secured_area]
    resource_owners:
        twitter:
            type:          twitter
            client_id:     XXXXXMyIdXXXXX
            client_secret: XXXXXMyTopSecretKeyXXXXX
Run Code Online (Sandbox Code Playgroud)

我的申请工作正常.但我无法在github上提交我的秘密!

我想要一个hwi_oauth.yaml像这样的文件:

hwi_oauth:
    firewall_names: [secured_area]
    resource_owners:
        twitter:
            type:          twitter
            client_id:     '%twitter_consumer_id%'
            client_secret: '%twitter_consumer_secret%'
Run Code Online (Sandbox Code Playgroud)

我阅读了有关新DotEnv包的Symfony4最佳实践.

使用环境变量虽然远非完美,但与我们目前的工作相比有很多好处.环境变量是管理依赖于环境的设置的更"标准"方式(例如,不需要管理parameters.yml.dist).

正如最佳实践中所建议的那样,我将这两行附加到.env文件:

TWITTER_CONSUMER_ID=XXXXXMyIdXXXXX
TWITTER_CONSUMER_SECRET=XXXXXMyTopSecretKeyXXXXX
Run Code Online (Sandbox Code Playgroud)

但是我遇到了这个错误:

您已请求不存在的参数"twitter_consumer_id".

我试着用%kernel.twitter_consumer_id%,%env.twitter_consumer_id%,%env(TWITTER_CONSUMER_ID)%没有更多的成功.

最后一个测试是返回此错误消息:

在渲染模板期间抛出了异常("未找到环境变量:"TWITTER_CONSUMER_ID".").

如何在参数文件中检索我的ENV变量hwi_oauth.yaml

php environment-variables symfony symfony-flex symfony4

9
推荐指数
2
解决办法
1417
查看次数

如何在OS X El Capitan版本10.11.6上使用xampp服务器上的gettext进行翻译

我正在使用gettext进行翻译的网站上工作.该网站正在其他机器的服务器上正常翻译但不在我的服务器上(OS X El Capitan版本10.11.6).我按照以下教程在mac上安装gettext:

链接到我遵循的教程

安装后,gettext仍然无法正常工作.有人可以帮我吗?

php translation gettext

6
推荐指数
1
解决办法
207
查看次数

用jQuery替换dt元素(phpBB)

我试着搜索,但是我找到的所有例子和答案都无法开始工作.

phpBB有以下几行代码:

    <!-- IF topicrow.S_FIRST_ROW or not topicrow.S_TOPIC_TYPE_SWITCH -->
    <div class="forumbg<!-- IF topicrow.S_TOPIC_TYPE_SWITCH and (topicrow.S_POST_ANNOUNCE or topicrow.S_POST_GLOBAL) --> announcement<!-- ENDIF -->">
    <div class="inner">
    <ul class="topiclist">
        <li class="header">
            <dl class="row-item">
                <dt<!-- IF S_DISPLAY_ACTIVE --> id="active_topics"<!-- ENDIF -->><div class="list-inner"><!-- IF S_DISPLAY_ACTIVE -->{L_ACTIVE_TOPICS}<!-- ELSEIF topicrow.S_TOPIC_TYPE_SWITCH and (topicrow.S_POST_ANNOUNCE or topicrow.S_POST_GLOBAL) -->{L_ANNOUNCEMENTS}<!-- ELSE -->{L_TOPICS}<!-- ENDIF --></div></dt>
                <dd class="posts">{L_REPLIES}</dd>
                <dd class="views">{L_VIEWS}</dd>
                <dd class="lastpost"><span>{L_LAST_POST}</span></dd>
            </dl>
        </li>
    </ul>
Run Code Online (Sandbox Code Playgroud)

我试图重新发布这部分(整行)

<dt<!-- IF S_DISPLAY_ACTIVE --> id="active_topics"<!-- ENDIF -->>
    <div class="list-inner">
        <!-- IF S_DISPLAY_ACTIVE -->{L_ACTIVE_TOPICS}
        <!-- ELSEIF topicrow.S_TOPIC_TYPE_SWITCH and (topicrow.S_POST_ANNOUNCE or …
Run Code Online (Sandbox Code Playgroud)

jquery phpbb

5
推荐指数
1
解决办法
68
查看次数

Laravel老()不工作

{!! Form::open(array('route' => 'posts.store', 'data-parsley-validate' => '')) !!}
    {{ Form::label('title', 'Title:') }}
    {{ Form::text('title',old('title'), array('class' => 'form-control', 'required' => '', 'maxlength' => '255')) }}
    {{ Form::label('slug', 'Slug:') }}
    {{ Form::text('slug',old('slug'), array('class' => 'form-control', 'required' => '', 'minlength' => '5', 'maxlength' => '255') ) }}
    {{ Form::label('category_id', 'Category:') }}
        <select class="form-control" name="category_id">
            @foreach($categories as $key=>$value)
                <option value='{{ $key }}'>{{ $value }}</option>
            @endforeach
        </select>  
    {{ Form::label('tags', 'Tags:') }}
        <select class="form-control select2-multi" name="tags[]" multiple="multiple">
            @foreach($tags as $tag)
                <option value='{{ $tag->id }}'>{{ $tag->name }}</option> …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5

5
推荐指数
1
解决办法
6035
查看次数

如何为某些控制器Symfony 3.4或4+更改Monolog通道

我想更改Monolog频道。我的声明适用于某些类,但不适用于控制器。

这是我的新管理频道声明:

#config/packages/dev/monolog.yaml
monolog:
    handlers:
        admin:
            type: stream
            path: "%kernel.logs_dir%/%kernel.environment%-admin.log"
            level: debug
            channels: ["admin"]
Run Code Online (Sandbox Code Playgroud)

通过添加标签,我可以将它与我的身份验证器一起成功使用:

#config/services.yaml
# The form guard authenticator for the admin access
app.security.admin_authenticator:
    class: App\Security\AdminAuthenticator
    autowire: true
    tags:
        - { name: monolog.logger, channel: admin}
Run Code Online (Sandbox Code Playgroud)

services.yaml文件的最后一行完成了这项工作,我的身份验证器不再登录应用程序频道,而是登录管理频道。

现在,我想将此通道与Admin子目录下的控制器一起使用,因此我在声明中添加了一个类似的标记:

#config/services.yaml
App\Controller\Admin\:
    resource: '../src/Controller/Admin'
    tags:
        - 'controller.service_arguments'
        - { name: monolog.logger, channel: admin}
Run Code Online (Sandbox Code Playgroud)

但是似乎没有影响。我仍在登录应用程序频道。(我做了一些验证,例如刷新缓存)。我找不到我的错误。

autowired symfony monolog symfony4

5
推荐指数
2
解决办法
1002
查看次数

覆盖 DBAL 类型

https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/cookbook/working-with-datetime.html

我尝试使用此代码来创建 UTC DateTime 类型。但是,代码没有被调用。

让我困惑的是这一部分:

use Doctrine\DBAL\Types\Type;
use DoctrineExtensions\DBAL\Types\UTCDateTimeType;

Type::overrideType('datetime', UTCDateTimeType::class);
Type::overrideType('datetimetz', UTCDateTimeType::class);
Run Code Online (Sandbox Code Playgroud)

没有解释应该在哪里调用此代码。它只说“在引导 ORM 之前”,经过几个小时的谷歌搜索后我仍然没有弄清楚这意味着什么,我现在陷入了死胡同。

我尝试将代码放在与 UTCDateTimeType 类相同的文件中,但这不起作用。

php symfony doctrine-orm

5
推荐指数
1
解决办法
893
查看次数

使用内部连接时如何优化 Doctrine 查询的数量?

我必须简单实体:日志和用户。Log 与 Entity 有 ManyToOne 关系。

Log:
  type: entity
  repositoryClass: LogRepository
  id:
    id:
      type: integer
      generator:
        strategy: AUTO
  fields:
    message:
      type: string      
  manyToOne:
    user:
      targetEntity: User
      joinColumns:
        user_id:
          referencedColumnName: id
Run Code Online (Sandbox Code Playgroud)

我的用例是显示日志列表和有关用户的一两个信息(例如他的姓名和他的邮件)

如果我使用该findall方法,Symfony 调试工具栏会显示 Doctrine 执行了大量查询。一个查询为我提供日志,并为每个用户执行一个查询!这当然不好,因为我可以看到一千个日志。我不想让我的数据库服务器过载。这个问题似乎很容易解决。但是我搜索了一段时间,结果似乎是“不良做法”。

所以我开始使用查询构建器在 LogRepository 类中编写一个新方法:

public function getLog(){
        $qb = $this->createQueryBuilder('l')
            ->select('l')
            ->innerJoin(
                'ApplicationSonataUserBundle:User', 'u', 
                Expr\Join::WITH,'l.user = u.id')
        ;
        return $qb->getQuery()->getResult();
}
Run Code Online (Sandbox Code Playgroud)

我仍然有同样的问题。我已将方法上的选择参数更改为:

public function getLog(){
        $qb = $this->createQueryBuilder('l')
            ->select('l','u')
            ->innerJoin('ApplicationSonataUserBundle:User','u', 
                        Expr\Join::WITH,'l.user = u.id')
        ;
        return $qb->getQuery()->getResult();
}
Run Code Online (Sandbox Code Playgroud)

尤里卡?好的,我只有一个查询,但我的方法不仅返回 Log,还返回 User...所以我的 Twig 模板崩溃了,因为我的循环包含 User,而不仅仅是 Log。当这是一个用户时,我的视图崩溃了,因为我想写消息字段。(Log.message …

php symfony doctrine-orm

4
推荐指数
1
解决办法
532
查看次数

如何使用 Symfony 在 serviceTest 中模拟 EntityManager?

抱歉我的问题很长。

如何在扩展 KernelTestCase 的服务测试中模拟实体管理器?

现在,解释和我的测试......

我使用的是Symfony3.2。我的应用程序是标准的。我有一些控制器,我使用 WebTestCase 来测试它们。

一般来说,我的控制器验证参数,调用服务/管理器,处理一些变量并将它们推送到视图,我的测试在扩展WebTestCase的测试中非常简单。

/**
 * Test New Game Action
 */
public function testFooAction(){
    //We mock the Service
    $fooService = $this
        ->getMockBuilder(GameService::class)
        ->disableOriginalConstructor()
        ->getMock();
    $fooService->expects(self::once())
        ->method('barMethod')
        ->willReturn($result);

    //We create the client
    $client = static::createClient();
    $container = $client->getContainer();

    //I put my mock here
    $container->set('app.game-service', $fooService);

    //I launch the request
    $client->request('GET', '/foo');
    //I handle the response
    $response = $client->getResponse();

    //I do some tests like this one
    self::assertEquals(200, $response->getStatusCode());

}
Run Code Online (Sandbox Code Playgroud)

如您所见,我没有调用 EntityManger,因为我使用Services和这些行来放置我的 …

phpunit unit-testing symfony

4
推荐指数
1
解决办法
6016
查看次数

从PHP调用Oracle存储过程

我正在尝试执行并从我的过程中获取数据:

这是我的程序定义方式:

create or replace PROCEDURE SP_GET_MY_DATA(
         IN_POP VARCHAR2,
         IN_SEG VARCHAR2,
         IN_DUR VARCHAR2, 
         IN_VIEW INTEGER, 
         IN_PAGE INTEGER, 
         VIEW_DATA_CUR OUT SYS_REFCURSOR) AS ...
Run Code Online (Sandbox Code Playgroud)

这是我的PHP代码,用于执行和从过程中获取数据:

$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = JXYX.com)(PORT = 1521)))(CONNECT_DATA=(SID=DHSJKS)))";
$conn = ocilogon("XXXXXX","XXXXXXXX",$db);          

$sql = 'BEGIN SP_GET_MY_DATA(:POP, :SEG, :DUR, :VIEW, :PAGE, :OUTPUT_CUR); END;';            

$stmt = oci_parse($conn,$sql);                     
oci_bind_by_name($stmt,':POP',$pop);           
oci_bind_by_name($stmt,':SEG',$seg);           
oci_bind_by_name($stmt,':DUR',$dur);           
oci_bind_by_name($stmt,':VIEW',$view);           
oci_bind_by_name($stmt,':PAGE',$page);           
$OUTPUT_CUR = oci_new_cursor($conn);
oci_bind_by_name($stmt,":OUTPUT_CUR", $OUTPUT_CUR, -1, OCI_B_CURSOR);                   
oci_execute($stmt, OCI_DEFAULT); 

while ($data = oci_fetch_assoc($OUTPUT_CUR)) {
    print_r($data);
}
Run Code Online (Sandbox Code Playgroud)

但是这样做我收到了这个错误:

oci_fetch_assoc():ORA-24374:在获取或执行之前定义未完成并获取".

我无法弄清楚我错过了什么.你能帮我吗?

php oracle

4
推荐指数
1
解决办法
7367
查看次数

如何将Tinymce与Symfony再现整合?

我有一个使用flexencoreSymfony4项目.我想补充一下.

所以我添加了tinymce项目:

$ yarn add tinymce
Run Code Online (Sandbox Code Playgroud)

我编辑了我的app.js文件:

require('../css/app.scss');

// Import TinyMCE
import tinymce from 'tinymce/tinymce';

// A theme is also required
import 'tinymce/themes/modern/theme';

// Any plugins you want to use has to be imported
import 'tinymce/plugins/paste';
import 'tinymce/plugins/link';

// Initialize the app
tinymce.init({
    selector: 'textarea',

    plugins: ['paste', 'link']
});
Run Code Online (Sandbox Code Playgroud)

我编译:

$ yarn run encore dev
Run Code Online (Sandbox Code Playgroud)

编译成功:

Running webpack ...

 DONE  Compiled successfully in 17600ms                                                                                                                                                                                                             

 I  8 files written to public\build
Done in …
Run Code Online (Sandbox Code Playgroud)

tinymce symfony yarnpkg webpack-encore

4
推荐指数
1
解决办法
1190
查看次数