在Symfony2中BandType,我添加了实体Tag:
->add('tags', 'entity', [
'label' => 'Tags',
'class' => 'DbBundle:Tag',
'property' => 'title',
'multiple' => true,
])
Run Code Online (Sandbox Code Playgroud)
这会生成多个select元素,我可以从数据库中选择现有的标签(Doctrine).但我需要动态添加新标签,这些标签尚不存在.
在客户端,我使用jQuery插件Selectize.js,它允许我添加新标签到选择框.但在提交表单后,新标签不会保存.
所以我的问题是 - 从选择框(实体字段类型)中保留新项目的最清晰方法是什么?
如何在没有表格的情况下使用VichUploaderBundle上传文件?
我在某个目录中有文件(例如web/media/tmp/temp_file.jpg)
如果我试试这个:
$file = new UploadedFile($path, $filename);
$image = new Image();
$image->setImageFile($file);
$em->persist($image);
$em->flush();
Run Code Online (Sandbox Code Playgroud)
我有这个错误:
由于未知错误,未上载文件"temp_file.jpg".
我需要从远程网址上传文件.所以我将文件上传到tmpdirecotry(使用curl),然后我一直尝试将它注入到VichUploadBundle中(如上所示).
如果使用.htaccess重写url,则使用php执行所有INSERT查询两次(不需要的重复)
我的.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
和index.php:
<?php define('DB_LOGIN', 'mylogin');
define('DB_PASS', 'mypass');
define('DB_HOST', 'localhost');
define('DB_TYPE', 'mysql');
define('DB_NAME', 'dbname');
$mysql = MySQL_Connect(DB_HOST, DB_LOGIN, DB_PASS);
$mysql_db = MySQL_Select_DB(DB_NAME);
mysql_query("INSERT INTO `pages` (`title`, `slug`) VALUES ('TEST', 'test')"); ?>
Run Code Online (Sandbox Code Playgroud)
一次加载index.php之后,我在mysql中有两个相同的条目。当我删除.htaccess时,一切正常,因此,问题一定在那里。.htaccess中的重写定义来自Wordpress-我喜欢它。
我尝试使用Medoo框架,但条目仍然重复。
那么,有什么建议吗?:-)
我需要将下载文件从 URL上传到我的服务器,并使用Uploadable (DoctrineExtensions)保留它。几乎一切都很好,我的方法是:
curl到我的服务器上的临时文件夹UploadedFile方法并用属性值填充它Media简化的代码:
// ... download file with curl
// Create UploadedFile object
$fileInfo = new File($tpath);
$file = new UploadedFile($tpath, basename($url), $fileInfo->getMimeType(), $fileInfo->getSize(), null);
// Insert file to Media entity
$media = new Media();
$media = $media->setFile($file);
$uploadableManager->markEntityToUpload($media, $file);
// Validate file (by annotations in entity)
$errors = $validator->validate($media);
// If no errors, persist and flush
if(empty($errors)) {
$em->persist($this->parentEntity);
$em->flush();
}
Run Code Online (Sandbox Code Playgroud)
如果我跳过验证,则一切正常。文件已成功移动到正确的路径(由 config.yml 中的可上传扩展配置)并保存到数据库。但手动创建的验证 …
php ×3
symfony ×3
.htaccess ×1
entity ×1
mod-rewrite ×1
mysql ×1
selectize.js ×1
validation ×1