标签: silex

Silex中的Twig扩展

我尝试将Twig-extensions加载到Silex但得到一个:

找不到'Twig_Extensions_Extension_Text'

我首先在自动加载器中注册Twig-Extensions:

$app['autoloader']->registerPrefixes(array( 'Twig_'  => array(__DIR__.'/../vendor/Twig-extensions/fabpot/lib')));
Run Code Online (Sandbox Code Playgroud)

然后注册Twig:

$app->register(new Silex\Provider\TwigServiceProvider(), array(
        'twig.path' => __DIR__ . '/../views',
         'twig.class_path' => __DIR__ . '/../vendor/twig/lib',
));
Run Code Online (Sandbox Code Playgroud)

并添加扩展名.

$oldTwigConfiguration = isset($app['twig.configure']) ? $app['twig.configure']: function(){};
$app['twig.configure'] = $app->protect(function($twig) use ($oldTwigConfiguration) {
    $oldTwigConfiguration($twig);
    $twig->addExtension(new Twig_Extensions_Extension_Text());
});
Run Code Online (Sandbox Code Playgroud)

Pathes似乎是正确的,Twig本身也很好.

任何的想法?

twig silex

3
推荐指数
1
解决办法
5735
查看次数

Silex路由问题(除了root给出404之外的其他路径)

这似乎应该工作,但我得到404错误.

我的应用程序如下所示:

LIB /的init.php:

$app = new Silex\Application();
$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/../views',
));
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
Run Code Online (Sandbox Code Playgroud)

和web/index.php:

require_once __DIR__.'/../lib/init.php';

$app->get('/about', function() use ($app) {
    return $app['twig']->render('about.twig.html');
})
->bind('about');

$app->get('/', function() use ($app) {
    return $app['twig']->render('index.twig.html');
})
->bind('homepage');

$app->run();
Run Code Online (Sandbox Code Playgroud)

我正在使用MAMP在我的本地机器上进行测试.当我访问localhost:8888/web时,它会使索引页面正常,没有问题,但访问localhost:8888/web/about会出现404错误.

这里发生了什么?

php silex

3
推荐指数
1
解决办法
4611
查看次数

使用Silex/Symfony提交响应后删除文件

我在我的Silex应用程序中使用Knp\Snappy\Pdf生成pdf.文件名是随机的并保存到tmp目录中.

$filename = "/tmp/$random.pdf"
$snappy->generate('/tmp/body.html', $filename, array(), true);
Run Code Online (Sandbox Code Playgroud)

我想在回复中返回pdf,

$response = new Response(file_get_contents($filename));
$response->headers->set('Pragma', 'public');
$response->headers->set('Content-Type', 'application/pdf');

return $response;
Run Code Online (Sandbox Code Playgroud)

pdf正确显示在Web浏览器中.请求完成后,具有随机文件名的文件仍然存在.在返回响应之前,我无法取消链接文件.我已经尝试使用register_shutdown_function注册一个关闭函数并从那里取消链接文件.然而,这似乎不起作用.有任何想法吗?

php symfony silex

3
推荐指数
2
解决办法
2598
查看次数

Silex Security success_handler

我如何为表单身份验证提供程序设置success_handler(和failure_handler)?

Silex用这个配置忽略了我:

<?php

use WebFactory\Security\UserProvider;

$app->register(new Silex\Provider\SecurityServiceProvider(), array(
    'security.firewalls' => array(
        'dev' => array(
            'pattern' => '^/(_(profiler|wdt)|css|images|js)/',
            'security' => false
        ),
        'default' => array(
            'pattern' => '^/.*$',
            'anonymous' => true,
            'form' => array(
                'login_path' => '/login',
                'check_path' => '/login_check',
                'success_handler' => 'authentication_handler', //<-- here
                'failure_handler' => 'authentication_handler', //<-- here
            ),
            'logout' => array('logout_path' => '/logout'),
            'users' => $app->share(function () use ($app) {
                        return new UserProvider($app['db']);
                    }),
        ),
    ),
    'security.access_rules' => array(
        array('^/login', 'IS_AUTHENTICATED_ANONYMOUSLY'),
        array('^/private$', 'ROLE_ADMIN'),
    ),
    'security.role_hierarchy' => array(
        'ROLE_SIMPLE_USER' …
Run Code Online (Sandbox Code Playgroud)

security silex

3
推荐指数
1
解决办法
1693
查看次数

如何在Silex-WebProfiler中集成Monolog?

我目前正在使用带有Monolog的Silex Framework作为日志记录机制.通过使用以下组件 - https://github.com/silexphp/Silex-WebProfiler(Silex-WebProfiler),我能够成功地将默认的Symfony WebProfiler集成到我的项目中.它可以工作,但不幸的是它无法从其_profiler页面显示来自Monolog的日志消息.有人知道如何解决这个问题吗?

这是我的配置,如果这是相关的:

use Silex\Provider;
...
//Monolog
$app->register(new Provider\MonologServiceProvider(), array(
    'monolog.logfile' => __DIR__ . '/../log/development.log',
    'monolog.name'    => 'MyAppName'
));
...
// Web Profiler
if ($app['debug']) {
    $app->register(new Provider\WebProfilerServiceProvider(), array(
        'profiler.cache_dir' => __DIR__.'/../cache/profiler/',
        'profiler.mount_prefix' => '/_profiler', // this is the default
    ));    
}
Run Code Online (Sandbox Code Playgroud)

php symfony silex monolog

3
推荐指数
1
解决办法
1292
查看次数

如何制作Laravel的微框架版本?

我正在考虑制作一个可以用作微框架的精简版Laravel,有点像Symfony世界的Silex.

我想我需要使用Laravel的Illuminate\Routing组件(可通过Packagist获得)并创建一个新的Router实例,然后使用Request对象调用 - >在路由器上调度,但我不太确定这是否是正确的方法做到这一点.

我很感激你的建议/解决方案.

php silex laravel

3
推荐指数
2
解决办法
2896
查看次数

调用handleRequest或bind时找不到Silex ExecutionContext :: getValidator()

我有以下silex代码在完成时呈现一个简单的表单和消息:

$app->register(new Silex\Provider\FormServiceProvider\FormServiceProvider());
$app->register(new Silex\Provider\ValidatorServiceProvider());

$app->match('/contact', function(Request $request) use ($app) {

$form = $app['form.factory']->createBuilder('form', null)
    ->add('name', 'text', array('required' => true, 'label' => 'Name',))
    ->add('submit', 'submit')
    ->getForm();

$form->handleRequest($request);

if ($form->isValid()) {

    die('success);
}

    return $app['twig']->render('contact.html.twig', array(
        'form'   => $form->createView(),
));
Run Code Online (Sandbox Code Playgroud)

但是在表单提交时,我会收到错误消息:

Call to undefined method Symfony\\Component\\Validator\\ExecutionContext::getValidator() 
in /home/user/project/vendor/symfony/form/Symfony
/Component/Form/Extension/Validator/Constraints/FormValidator.php on line 56
Run Code Online (Sandbox Code Playgroud)

我正在注册上面的ValidatorServiceProvider,所以我很难理解它可能是什么.

forms validation silex

3
推荐指数
1
解决办法
1097
查看次数

Silex名称空间

我仍然是名称空间的新手,并且很难理解如何使用它们.我正在使用Silex Microframework并尝试设置我的文件夹结构.到目前为止,我有:

cms/
  ACP/
    Controller/
      HomeController.php
    View/
  Front/
    Controller/
      HomeController.php
    View/
      Template/
        page.php
      home.php
  app.php
  bootstrap.php
Run Code Online (Sandbox Code Playgroud)

我正在尝试在Front/Controller文件夹中加载HomeController.在我的app.php文件中,我正在呼叫家里的控制器.

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();
$app['debug'] = true;

$app->get("/", "cms\Front\Controller\HomeController::index");
$app->get('/test', function() {
    return new Symfony\Component\HttpFoundation\Response("Test successful");
});

return $app;
Run Code Online (Sandbox Code Playgroud)

如果我进入/test浏览器它工作正常.然而,当我去/那时我得到一个错误.

ControllerResolver.php第153行中的InvalidArgumentException:

类"cms\Front\Controller\HomeController"不存在.

我已经cms在composer.json和HomeController中定义为命名空间

<?php namespace cms\Front\Controller;

class HomeController {

    public function index() {
        return "Hello World, I'm the front page!";
    }

}
Run Code Online (Sandbox Code Playgroud)

我也尝试将HomeController.php文件直接移动到cms目录中,将文件中的命名空间更改为just cms然后运行$app->get("/", "cms\HomeController::index");,但它仍然无效.我得到了不存在的相同错误.

这是我的作曲家档案:

{
    "require": …
Run Code Online (Sandbox Code Playgroud)

php namespaces silex

3
推荐指数
1
解决办法
1229
查看次数

使用Symfony3组件时,Silex FormServiceProvider无法加载"form"类型

在尝试构建表单时,我收到此错误:

FormRegistry.php第87行中的InvalidArgumentException:无法加载类型"form"

我已经注册了FormServiceProvider,TranslationServicerProvider和ValidatorServiceProvider.

这是我的代码的相关部分:

        $this->_form = $this->_app['form.factory']->createBuilder('form', $this->_map())
        ->add('firstName', 'text', [
            'constraints' => [new Assert\NotBlank()]
        ])
        ->add('lastName', 'text', [
            'constraints' => [new Assert\NotBlank()]
        ])
        ->add('email', 'text', [
            'constraints' => [new Assert\Email()]
        ])
        ->getForm();
Run Code Online (Sandbox Code Playgroud)

以下是我正在使用的相关组件的版本号:

silex/silex v1.3.4基于Symfony组件的PHP微框架symfony/security-core
v3.0.1 Symfony安全组件 - 核心库symfony/security-csrf v3.0.1 Symfony安全组件 - CSRF库symfony/translation v3.0.1 Symfony Translation Component symfony/twig-bridge v3.0.1 Symfony Twig Bridge symfony/validator v3.0.1 Symfony Validator Component symfony/form v3.0.1

我能够在之前版本的Silex中成功地做到这一点; 做了什么破坏或我错过了什么?

php symfony silex symfony2-forms

3
推荐指数
2
解决办法
1924
查看次数

Silex v1.3到Silex v2:Twig_Error_Runtime

我最近将我的Silex v1.3项目迁移到了Silex v2,其中一切正常.我得到一个枝条错误,我不明白原因

Twig_Error_Runtime in Template.php line 590:

Neither the property "request" nor one of the methods "request()", "getrequest()"/"isrequest()" or "__call()" exist and have public access in class "Silex\Application" in "index.twig" at line 5
Run Code Online (Sandbox Code Playgroud)

这是我的index.twig文件的第5行

{% extends "layout.twig" %}


{% block stylsheets %}
<link rel="stylesheet" type="text/css" href="{{ app.request.basepath }}/public/libs/odometer/themes/odometer-theme-minimal.css" />
Run Code Online (Sandbox Code Playgroud)

当然在布局中,我称之为

{% block stylsheets %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但我完全不确定,问题出现在twig文件上......是否有必要改变?

这是控制器的摘录:

$app->get('/', function () use ($app) {

    return $app['twig']->render('index.twig', [
        ...
    ]);
})->bind('homepage');
Run Code Online (Sandbox Code Playgroud)

感谢帮助

php templates symfony twig silex

3
推荐指数
2
解决办法
706
查看次数