直到几天前,才有可能使用新的(Symfony 3)目录结构创建一个新的Symfony项目.运行时composer create-project symfony/framework-standard-edition path/ "2.5.*",Composer会询问以下问题:
你想使用Symfony 3目录结构吗?[Y/N]
新结构提供了一些改进,例如console从app目录移动到bin目录,以及phpunit.xml.dist从app目录移动到根目录.缓存和日志目录已移至新var目录.
看一下这个答案(由我编写),以获取完整的更改列表.
但是,全新安装的标准发行版不再提供此选项.似乎问题已于7月16日被删除,因为新的目录结构造成了太多的混乱,特别是对于新用户.在GitHub上也可以看到这个问题.
是否仍然可以使用新的目录结构创建项目?
登录到我的Symfony应用程序时(使用正确的用户名和密码),我收到以下错误:
ContextErrorException:Catchable Fatal Error:传递给Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken :: __ construct()的参数4必须是一个数组,给定null,在D:\ xampp\htdocs\essweb\vendor\symfony中调用第96行的\ symfony\src\Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider.php,在D:\ xampp\htdocs\essweb\vendor\symfony\symfony\src\Symfony\Component\Security\Core中定义\ Authentication\Token\UsernamePasswordToken.php第36行
Security.yml
firewalls:
admin_area:
pattern: ^/
anonymous: ~
form_login:
login_path: /
check_path: /login_check
default_target_path: /user
failure_path: /
#username_parameter: username
#password_parameter: password
remember_me: true
remember_me:
key: "%secret%"
lifetime: 31536000
path: /
domain: ~
always_remember_me: true
logout:
path: /logout
target: /
Run Code Online (Sandbox Code Playgroud)
更新:
登录表格:
<form class="form-signin form-group" action="{{ path('login_check') }}" method="post">
Username: <input type="text" class="form-control" name="_username" placeholder="Username" value="{{ last_username }}" required="required">
Password: <input type="text" class="form-control" name="_password" placeholder="" value="{{ last_username }}" required="required">
<button class="btn …Run Code Online (Sandbox Code Playgroud) 如果我打印UploadedFile实例的内容,这就是我得到的
array (
'opt_image_header' =>
Symfony\Component\HttpFoundation\File\UploadedFile::__set_state(array(
'test' => false,
'originalName' => 'triangle-in-the-mountains.jpg',
'mimeType' => 'image/jpeg',
'size' => 463833,
'error' => 0,
)
Run Code Online (Sandbox Code Playgroud)
这就是我在Controller中获取上传文件的方法.在移动它之前,我应该调整它.
foreach($request->files as $uploadedFile){
$ext = '.' . $uploadedFile['opt_image_header']->guessExtension();
$filename = sha1(uniqid(mt_rand(), true)) . $ext;
$uploadedFile['opt_image_header']->move($path . '/images/', $filename);
}
Run Code Online (Sandbox Code Playgroud)
所以在保存之前没有"tmp_name"我需要调整图像大小.
我是否需要直接从$ _FILE数组中读取它?
我已经在git仓库工作了一段时间并做了一些提交.我一直在我的php文件中使用文档块,包括我的私人电子邮件地址,如下所示:
/**
* Bla bla bla.
*
* @author: Nic <foo@bar.com>
*/
Run Code Online (Sandbox Code Playgroud)
现在我创建了一个新的电子邮件地址并更新了文档块,用新的地址替换了旧地址.但是这个更改仅适用于我更改文档之后的提交.
如何从git的历史记录中完全删除旧的电子邮件地址并用新地址替换所有实例?
我尝试过使用这个博客文章使用git filter-branch 但没有成功.我得到以下结果:
git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#old-email@example.com#new-email@foobar.com#g"' -- --all
Usage: git core\git-filter-branch [--env-filter <command>] [--tree-filter <command>]
[--index-filter <command>] [--parent-filter <command>]
[--msg-filter <command>] [--commit-filter <command>]
[--tag-name-filter <command>] [--subdirectory-filter <directory>]
[--original <namespace>] [-d <directory>] [-f | --force]
[<rev-list options>...]
Run Code Online (Sandbox Code Playgroud)
可能是电子邮件地址(@和.)的特殊字符搞乱了正则表达式吗?除此之外我不知道出了什么问题,任何帮助表示赞赏!
设置.
我在使用aws-sdk npm模块的Node.js上.我在S3上有一个AWS桶以及相关的访问和密钥.密钥位于我的.travis.yml文件中.我正在尝试从我的Node.js应用程序测试将图像保存到我的S3存储桶.
有趣的是......它已经在特拉维斯工作了很长时间,然后几天前它就停止了这个错误:
message: 'CERT_UNTRUSTED',
code: 'NetworkingError',
region: 'us-east-1',
hostname: 'chyld-evernode-test.s3.amazonaws.com',
retryable: true,
time: Sat Dec 20 2014 18:35:45 GMT+0000 (UTC)
Run Code Online (Sandbox Code Playgroud)
现在,它仍然可以在我的LOCAL盒子上正常工作,并且在部署到HEROKU之后它仍然可以工作.我的猜测恰好发生在特拉维斯身上,导致我的测试失败.
想法?
我正在使用Windows平台(请不要嘲笑我).我正在尝试使用运行Windows 7的localmachine中的asseti构建一个Symfony2项目.
现在我不能为了生命中的爱而弄清楚为什么它不会倾倒资产文件.它总是说某种RunTime Exception.我认为这与咖啡箱和节点路径有关.这是设置咖啡箱和节点路径的正确方法吗?
framework:
[...]
# Twig Configuration
twig:
[...]
# Assetic Configuration
assetic:
debug: "%kernel.debug%"
use_controller: true
bundles: [...]
filters:
sass:
load_paths: [ "%kernel.root_dir%/../src/xxxxx/WebsiteBundle/Resources/public/vendor/" ]
compass: true
coffee:
bin: C:\Users\xxxxx\AppData\Roaming\npm\coffee
node: C:\Program Files\nodejs\node
cssrewrite: ~
# Doctrine Configuration
[...]
Run Code Online (Sandbox Code Playgroud)
php composer.phar 安装工作正常
php app/console asset:install 工作良好
php app/console assetic:dump 给我以下错误:
[RuntimeException的]
无法写入文件C:/ xampp/htdocs/xxxxx/app /../ web/js/3b27a3f_js?key = AIzaSyCk9Cxgv09X9DKar1bcsLAXxlqP3YhF0OI_1.js
我最初的感觉是咖啡箱和节点路径有问题.
以下是我的机器中的位置.


我不知道是怎么回事.我会抛弃任何可能有助于解决这个问题的输出.我觉得这里很无能为力.我正在使用SASS,指南针,咖啡等
我是这个论坛的新手,我从今晚开始学习PHP.
我想发一份表格,但我不知道它们之间的区别:
<form action="page2.php" method="GET">
Run Code Online (Sandbox Code Playgroud)
和
<form action="page2.php" method="POST">
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
谢谢.
对于Symfony2中的项目,我需要能够使用外部RESTful API而不是数据库来持久化/检索实体.由于Doctrine将实体映射到数据库表的一行,我认为创建从实体到外部API的映射应该很容易.但是,这对我来说是新的,我似乎无法找到任何关于此的描述/教程.(也许我错过了我的谷歌的正确的话)
我希望有一个类似于Doctrine的解决方案.我宁愿不使用基于ActiveRecord模式的东西,因为我希望持久性逻辑与实体分开.实体不应该知道它是如何持久化的.
我希望能够做类似的事情:
$entity = new Entity();
$em = $this->getREST()->getManager(); // get REST Entity Manager
$em->persist($entity); // save the entity using a POST request
$em->flush();
Run Code Online (Sandbox Code Playgroud)
还有这个:
$em = $this->getREST()->getManager(); // get REST Entity Manager
// retrieve the entity using a GET request
$entity = $em->getRepository('AcmeDemoBundle:Entity')->find($id);
Run Code Online (Sandbox Code Playgroud)
还有这个:
$em = $this->getREST()->getManager(); // get REST Entity Manager
// retrieve all entities using a GET request
$entities = $em->getRepository('AcmeDemoBundle:Entity')->findAll();
Run Code Online (Sandbox Code Playgroud)
换句话说,如果语法几乎与Doctrine相同,那就太好了.
此外,我想在外部文件(例如YAML)中配置映射,而不是在实体中配置注释.(正如我所说,实体不应该知道它们是如何被保留的)
Forgottenbas已经提到了几个解决方案,但它们并不完全满足我的要求,我希望会有更多的解决方案,因为我确信我不是第一个必须解决这个问题的人.
任何人都能指出我正确的方向吗?
好吧,我很确定我不是第一个遇到这种情况的人,我只是不知道正确的词来搜索解决方案.考虑以下数据库表(针对此问题进行简化):
数据库表http://www.nth-root.nl/public/images/wolf/cat_attr.png
正如您在图片中看到的,有一个包含产品类别的类别表和一个包含不同属性的属性表.例如:颜色(用于服装),容量(用于mp3播放器)等.
第三个表位于图片的中心,将属性链接到类别.
现在在后端我有一个"编辑类别"页面,其中包含一个用于编辑(或添加)类别的表单.在同一页面上,我想显示下拉列表列表,以便管理哪些属性链接到当前产品类别.
后端http://www.nth-root.nl/public/images/wolf-commerce/edit_category.png
它使用jquery来添加/删除下拉列表.
问题是:如何使用表单的$ _POST数据操作category_attribute表中的数据.
懒惰的解决方案是(并且我过去已经这样做了):
1.删除给定类别
2的category_attribute中的所有当前行.然后将所有选定的属性插入category_attribute
但这并不是非常有效,即使有人只更改了类别的标题,它也会删除并重新添加所有行.
所以我正在寻找一种方法来进行正确的插入,更新和删除:
1.删除$ _POST中没有出现的行(已删除下拉列表)
2.更新已更改的行(另一个选项来自已选择下拉列表)
3.插入新的行(已添加新的下拉列表)
我只是不知道该怎么做或在哪里找到一个好例子.使用某些ajax可能很容易,但我正在寻找一个纯粹的php解决方案,将$ _POST值与数据库中的值进行比较.
如果有人知道一篇解释最佳(也是最有效)解决方案的好文章,请告诉我,我将非常感激.
-edit-
我已经包含了一些图片来澄清我的问题,但是堆栈溢出拒绝包含它们因为我的声誉太低,所以我希望我的问题很清楚,没有图像.
-edit2-现在我有足够的声誉,我添加了图像.
提前致谢,
尼克
我没有看到设计使用 PUT 和 DELETE 来更新和删除数据的 REST API 服务的巨大好处。这两个动词可以通过使用 POST 和唯一的 url 轻松替换。
我看到使用 PUT 和 DELETE 的唯一好处是它减少了 REST API 服务使用的 url 数量,这并不多。我忽略了其他好处吗?