小编iam*_*015的帖子

无法在Symfony 4服务上注入模板

我有以下课程:

电子邮件通知

namespace App\Component\Notification\RealTimeNotification;

use Symfony\Bridge\Twig\TwigEngine;
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;

use App\Component\Notification\NotificationInterface;

class EmailNotification implements NotificationInterface
{   
    private $logNotification;

    public function __construct(LogNotification $logNotification, \Swift_Mailer $mailer,  EngineInterface $twigEngine)
    {
        $this->logNotification = $logNotification;
    }

    public function send(array $options): void
    {
        $this->logNotification->send($options);

        dump('Sent to email');
    }
}
Run Code Online (Sandbox Code Playgroud)

我的yml上有以下服务定义:

app.email_notification:
    class: App\Component\Notification\RealTimeNotification\EmailNotification
    decorates: app.log_notification
    decoration_inner_name: app.log_notification.inner
    arguments: ['@app.log_notification.inner', '@mailer', '@templating']
Run Code Online (Sandbox Code Playgroud)

但是,当我试图运行我的应用程序时,它抛出一个异常说:

无法自动服务"App\Component\Notification\RealTimeNotification\EmailNotification":方法"__construct()"的参数"$ twigEngine"具有"Symfony\Bundle\FrameworkBundle\Templating\EngineInterface"类型,但未找到此类.

为什么会这样?

谢谢!

symfony symfony4

12
推荐指数
3
解决办法
9389
查看次数

向 Observable 发出新的值

我有以下代码:

this.isUsingGoogleTwoFactor$ = this.user$.pipe(map((user: User) => 
user.isUsingGoogleTwoFactor));
Run Code Online (Sandbox Code Playgroud)

现在我想要的是向 发出新值isUsingGoogleTwoFactor$。我知道我不能这样做,observables但我应该使用subjects. 但我不知道具体如何用管道来做。

谢谢!

javascript rxjs angular

10
推荐指数
2
解决办法
1万
查看次数

php rename()访问被拒绝.(代码:5)

所以我试图在php中使用重命名功能.

在第一次尝试时,如果目标文件夹为空或者不包含与源文件夹同名的任何目录,则重命名功能可以正常工作.但是,如果存在相同的目录名,则会失败.我想要的只是覆盖它,我认为重命名()就足够了.

这是我的代码:

/**
        *   Move temp folders to their permanent places
        *
        *   $module_folder = example (violator, pnp, etc)       
        *   $folders = name of folders within module_folder
        **/
        public function move_temp_to_permanent($module_folder, $folders){
            $bool = false;

            $module_folder_path = realpath(APPPATH . '../public/resources/temps/' . $module_folder);

            $module_folder_destination_path = $_SERVER['DOCUMENT_ROOT'] . '/ssmis/public/resources/photos/' . $module_folder . '/';

            foreach($folders as $folder){
                $bool = rename($module_folder_path . '/' . $folder, $module_folder_destination_path . $folder);
            }

            return $bool;
        }
Run Code Online (Sandbox Code Playgroud)

上面的代码给我一个错误说:

消息:重命名(C:\ xampp\htdocs\ssmis\public\resources\temps\violator/SJ-VIOL-2015-0002,C:/ xampp/htdocs/ssmis/public/resources/photos/violator/SJ-VIOL- 2015-0002):访问被拒绝.(代码:5)

我使用CodeIgniter作为框架.

非常感谢你!

php codeigniter

8
推荐指数
1
解决办法
1万
查看次数

IReport与Java 8不兼容

我已经在我的PC中安装了Java 8(实际上,它是唯一安装的JDK),并且我具有iReport版本5.1.0。

一旦运行iReport,就什么也没有发生。它根本没有运行。

我认为这两种技术不兼容。我在某个论坛中进行搜索并发现,即使最新版本的iReport也不支持Java 8。

这有多真实?如果是这样,新版本的iReport支持Java 8需要多长时间?我可以在报告中使用其他替代工具吗?

我正在使用Netbeans 8.0。

java

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

删除数据表列中的额外填充

你好,我创建了 JQuery DataTables,如下所示:

在此输入图像描述

所以我的问题是如何删除“图片”列中过多的填充?

这就是我初始化表的方式:

$('#violators_tbl').DataTable({
            "aoColumnDefs": [
                { "bSortable": false, "aTargets": [ 2,3 ] },
                { "sWidth": "20%", "aTargets": [ 0 ] },
                { "sWidth": "35%", "aTargets": [ 1 ] },
                { "sWidth": "30%", "aTargets": [ 2 ] },
                { "sWidth": "15%", "aTargets": [ 3 ] },
            ],
        });
Run Code Online (Sandbox Code Playgroud)

这是我向表中添加行的方法:

function update_table(violator){
        var img_str1 = '<img class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.front_temp_file_path + '\">';
        var img_str2 = '<img style=\"margin-left: 10px;\" class=\"obj-pic\" src=\"' + Main.Vars.base_path + violator.rear_temp_file_path + '\">';
        var …
Run Code Online (Sandbox Code Playgroud)

css jquery datatables

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

在数组中使用和对象分配javascript对象

我对此很好奇.

比方说,我有对象的数组和我创建1个对象,让命名的对象数组项目和对象项目.

我想通过使用以下代码在我的项目数组中获取特定项:

//gets an item base on ID
function get_item(td){
    var item = undefined;
    $.each(items, function(i, val) {
        if(val.item_id == td){
            item = val;
        }   
    });
    return item;
}
Run Code Online (Sandbox Code Playgroud)

get_item()基本上获取与提供的id匹配的对象.

所以我的问题是这个.如果我更改了item的属性,它还会更改数组中与之关联的对象的属性吗?

非常感谢你!

javascript arrays

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

无法在 UploadedFile Symfony 上获取文件内容

我有以下函数定义:

public function save(UploadedFile $file, string $fileSystemName)
{
    $fs = $this->fileSystemMap->get($fileSystemName);

    $contents = file_get_contents($file->getRealPath());
    $filename = sprintf('%s/%s/%s/%s.%s', date('Y'), date('m'), date('d'), uniqid(), $file->getClientOriginalExtension());

    $fs->write($fileName, $contents);
}
Run Code Online (Sandbox Code Playgroud)

代码运行时:

file_get_contents($file->getRealPath());

它抛出一个错误说:

警告:file_get_contents(/tmp/phpM9Ckmq):无法打开流:没有那个文件或目录

请注意,我也尝试使用 $file->getPathName(),但结果是一样的。

为什么会这样?

谢谢!

symfony

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

Typescript 不会在运行时进行类型检查

我是打字稿的初学者,并在他们的 Playground 网站上使用它。我有以下代码:

class Queue<T> { 
    private data = [];

    push = (item: T) => this.data.push(item);
    pop = (): T => this.data.shift();
}



let button = document.createElement('button');
button.textContent = "Say Hello";
button.onclick = function () {
    let q = new Queue<number>();
    q.push("asdada");

    alert(q.pop(0));
}

document.body.appendChild(button);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我创建了一个队列对象来只接受一个数字。但是,我能够传递字符串并能够在浏览器上发出警报。我看到了编译后的 JS 版本,它没有对我的变量进行类型检查。难道打字稿不应该避免这些错误吗?还是我错了?

谢谢!

javascript typescript

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

复选框单击事件两次触发

我在一个模态中使用jQuery DataTables.从该表我有一个列,其中包含复选框.获取已选中复选框的值的第一次尝试都可以.但是,当我关闭模态并再次选择时,复选框单击事件将触发两次.这是我的代码:

//handle event for checkbox checking.
arresting_officers_table.on("change", ":checkbox", function() { 
  if($(this).is(':checked')){
    console.log('Adding!'); //this log fires twice when clicking only 1 checkbox
    //alert('checked! ' + $(this).attr('data-value'));
    arresting_officers_ids.push($(this).attr('data-value'));
    arresting_officers_names.push($(this).attr('data-name'));
  } else {
    //remove item
    var idx = arresting_officers_ids.indexOf($(this).attr('data-value'));
    arresting_officers_ids.splice(idx, 1);
    arresting_officers_names.splice(idx, 1);
  }
});
Run Code Online (Sandbox Code Playgroud)

非常感谢您的回复.谢谢!

javascript checkbox jquery datatables

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

从jquery DataTables中的渲染中删除一行

如果在初始化期间满足条件,我想跳过行渲染,但是我不知道确切放置它的位置.

我应该把它放在fnCreatedRowfnPreDrawCallback
我怎么能这样做?

这是我的代码:

 var users_tbl =$('#users_tbl');
    users_tbl.DataTable({
        "deferRender": true,
        "autoWidth": false,
        //for reinitialisation purpose
        destroy: true,
        "aLengthMenu": [[20, 40, 50, 100, -1], [20, 40, 50, 100, "All"]],
        "order": [[ 0, "DESC" ]],
        "ajax" : {
                url :  Main.Vars.host + "settings/get_users",
                type : "GET",
            },
            "aoColumnDefs": [

                    { "sWidth": "5%", "aTargets": [ 0 ] },
                    { "sWidth": "20%", "aTargets": [ 1 ] },
                    { "sWidth": "25%", "aTargets": [ 2 ] },
                    { "sWidth": "15%", "aTargets": [ …
Run Code Online (Sandbox Code Playgroud)

jquery datatables

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

如何使用 Symfony 导出大型 CSV 文件的技术

我的任务是将 100,000 行记录从我的数据库导出为 csv 格式。

这样做的最佳方法是什么?我完全不知道要搜索和研究什么。

我想在下载尚未完成的同时像其他具有 PART 格式的站点一样进行块下载,同时不要让我的服务器耗尽。

我怎样才能做到这一点?

谢谢!

php csv file symfony

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

过渡拒绝角度UI路由器

我有一个HTTPInterceptor,只要捕获到401,它就应该进入登录状态。我的问题是,我对API的3次异步调用几乎同时开始。当它们全部返回401时,出现以下错误:

转换拒绝($ id:0类型:6,消息:转换错误,详细信息:“未定义”)

这是我的拦截器代码:

switch (response.status) {
  case 401:
    let url = $location.absUrl();
    // This condition supposed to prevent
    // going to signin state again after a response of 401.
    // Not really sure if ui-router will navigate still on the same
    // state. So maybe this condition is not needed?
    if (url.indexOf('sign-in') !== -1) {
      deferred.reject(response.data.error);
    } else {
      if ($transitions._transitionCount === 1) {
        $state.go('signin');
      }
    }
    break;
Run Code Online (Sandbox Code Playgroud)

香港专业教育学院到目前为止尝试的是检查transitionCount,但错误仍然存​​在。

谢谢!

angularjs angular-ui-router

2
推荐指数
1
解决办法
6290
查看次数

在自定义验证器 Angular 中使用 Observable

所以我正在创建一个验证器来检查用户名是否已被占用。

我有以下自定义验证器定义:

import { AbstractControl } from '@angular/forms';
import { AccountApi } from '../../api/service/account.api';
import { Injectable } from '@angular/core';
import { switchMap, mapTo, catchError } from 'rxjs/operators';
import { of, timer } from 'rxjs';


@Injectable()
export class UsernameValidator {
  constructor(private api: AccountApi) {

  }

  exists(control: AbstractControl) {
    // this.api.checkUsernameIfExisting(control.value).subscribe((existing) => {
    //   control.setErrors({ exists: existing });
    // });

    // return null;

    return timer(100).pipe(
      switchMap(() => this.api.checkUsernameIfExisting(control.value).pipe(
          // Successful response, set validator to null
          mapTo(null),
          // Set error object on …
Run Code Online (Sandbox Code Playgroud)

angular angular-reactive-forms

2
推荐指数
1
解决办法
2126
查看次数