Symfony2使用第三方库Upload制作图纸上传实例详解,Symfony2安装第三方Bundles实例详解

正文实例剖析了Symfony2使用第三方库Upload制作图纸上传的格局。分享给大家供我们参谋,具体如下:

正文实例深入分析了Symfony2开辟之调整器用法。分享给大家供大家仿照效法,具体如下:

本文实例陈说了Symfony2安装第三方Bundles的不二秘籍。分享给大家供大家参谋,具体如下:

正文实例呈报了Symfony查询形式。分享给大家供大家参考,具体如下:

笔者们在应用程序也许网址的个人资料里一般皆有设置头像的功用,这一章大家在Symfony2里用第三方的二个相比著名Upload库来创立上传图片的功能。

调节器是PHP函数,通过它,你能够依据HTTP诉求创造任务音讯,並且创设和重返HTTP响应。响应得以是HTML页面、XML文书档案、类别化的JSON数组、图片、重定向、404不当乃至是您可以想到的成套。调节器中含有了你应用程序须要创建响应的空洞逻辑。

大多数的Bundles都提了设置的牵线,上面来介绍主题的设置步骤:

  1. createQuery的写法

一、安装第三方库

收受乞请,重临响应的着力生命周期

一、增多composer正视关系

$sql = 'SELECT COUNT(DISTINCT(g.goodsId)) FROM AppBundle:GoodsIndex g WHERE g.status = :status';
$params = array(
 'status' => GoodsIndex::STATUS_NORMAL,
);
if (!empty($keywords)) {
 $params['keywords'] = "%{$keywords}%";
 $sql .= ' AND g.keywords like :keywords ';
}
 if (!empty($warehouseIdList)) {
  $params['warehouseIdList'] = $warehouseIdList;
  $sql .= " AND g.warehouseId IN :(warehouseIdList)";
 }
$goodsNum = $this->entityManager->createQuery($sql)->setParameters($params)->getSingleScalarResult();

1.在composer.json文件中的”require”中步向

1、每种供给都被单个前端调控器(如app.php或index.php)文件管理,前端调整器担任引导框架;
2、路由查看并协作央浼消息,并将其针对性叁个一定的路由,该路由调控调用哪个调控器;
3、试行调整器,调整器中的代码将成立并赶回一个Response对象;
4、HTTP头和Response对象的剧情将发回客户端。

在symfony里,用composer来管理注重关系

私家总括::是指占位符的意思,幸免sql注入。所以把具有需求的参数做成数组$params里面。

"codeguy/upload": "*"

固然如此名称相似,但前者调节器与大家在本章节所说的调整器是不相同的,前端调节器是您web目录中的几个PHP小文件,全部的呼吁都直接通过它。贰个独立的应用程序将有三个用于生产的前端调控器(如app.php)和三个用来支付的前端调节器(如app_dev.php)。你能够恒久不供给对前面一个调整器举行编辑、查看和担忧。

1.找到Bundle的包的名目

  1. getQuery的写法

澳门葡京备用网址 1

编纂三个回顾的调控器

在包的README里一般都告知了我们它的名称,若无,能够在

$orderBy = 'p.'.$searchOptions['orderBy'];
$repository = $this->entityManager
 ->getRepository('AppBundle:GoodsIndex');
$query = $repository->createQueryBuilder('p');
$query->select('DISTINCT(p.goodsId)');
$query->where('p.keywords like :keywords')
 ->setParameter('keywords', "%{$searchOptions['keywords']}%")
 ->andwhere('p.status = :status')
 ->setParameter('status', GoodsIndex::STATUS_NORMAL)
 ->orderBy($orderBy, $searchOptions['order'])
 ->setFirstResult($pagination['pageSize'] * ($pagination['page'] - 1))
 ->setMaxResults($pagination['pageSize']);
if (!empty($searchOptions['warehouseIdList'])) {
 $query->andWhere($query->expr()->in('p.warehouseId', $searchOptions['warehouseIdList']));
}
$goodsIndexList = $query->getQuery()->getResult();

2.运维指令安装

眼下一篇《Symfony学习非常钟入门杰出教程》已经说了怎么样成立Bundle未来直接说哪些增多调控器。调控器是infoAction方法,它隶属于叁个说了算器类(UserController)。不要对名称认为质疑:调节器类只是简短将多少个调整器集中在一块儿的。平常境况下,调节器类将停放多少个调节器(如updateAction、deleteAction等)。

2.通过composer来安装Bundle

越多关于Symfony相关内容感兴趣的读者可查看本站专项论题:《Symfony框架入门教程》、《Symfony2使用第三方库Upload制作图纸上传实例详解,Symfony2安装第三方Bundles实例详解。codeigniter入门教程》、《CI(CodeIgniter)框架进级教程》、《php非凡开垦框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用艺术总括》、《Zend
FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作本事汇总》

composer update
//Symfony2充分利用了PHP5.3的名称空间的功能去为整个控制器类命名空间
namespace ZM\ApiBundle\Controller;
//use关键字导入类,是控制器必须返回的
//出于方便的考虑,Symfony2提供了一个Controller基类,以帮助实现常用的一些控制器任务,你的控制器类能够访问所需的资源。通过继承该类,你可以利用其中的一些方法。
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
class UserController extends Controller {
  /**
   * 用户个人中心查看
   * @return Response
   */
  public function infoAction() {
    $conn = $this->getDoctrine()->getConnection();
    $request = Request::createFromGlobals()->request;
    $phone = $request->get('phone');
    $result = $conn->fetchAssoc("SELECT * FROM user WHERE phone = ? LIMIT 1", array($phone));
    //控制器创建并返回一个Response对象
    return new Response(json_encode($result), '200', array('Content-Type' => 'application/json'));
  }
}

驾驭了bundle的包名之后,大家得以经过composer来安装它

意在本文所述对大家基于Symfony2框架的PHP程序设计有着支持。

二、编码

本文长久地址:
正文来源 IT985博客 ,转发时请注解出处及相应链接。

$ composer require codeguy/upload

你可能感兴趣的篇章:

  • Symfony2联合查询达成格局
  • Symfony2使用Doctrine实行数据库查询办法实例总计
  • 高质量PHP框架Symfony2杰出入门教程
  • Symfony2完结从数据库获取数据的办法小结
  • Symfony2学习笔记之模板用法详解
  • Symfony2框架学习笔记之表单用法详解
  • Symfony2框架成立项目与模板设置实例详解
  • symfony2.4的twig中date用法剖析
  • Symfony2学习笔记之调控器用法详解
  • Symfony2安装第三方Bundles实例详解
  • Symfony2实现在controller中获取url的方法
  • Symfony2针对输入时间举办查询的措施剖判

1.编辑uploadPic方法上传图片,并将上传图片的用户id作为文件名

更加多关于PHP框架相关内容感兴趣的读者可查阅本站专项论题:《php优良开垦框架总计》,《codeigniter入门教程》,《CI(CodeIgniter)框架进级教程》,《Yii框架入门及常用手艺总计》及《ThinkPHP入门教程》

codeguy/upload是二个上传文件的bundle,在上一章《Symfony2使用第三方库Upload制作图纸上传实例详解》中大家利用到。

<?php
/**
 * @author Sun
 * By blogs.zmit.cn http://blogs.zmit.cn
 * 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 http://blogs.zmit.cn/6544.html
 * 中梦博客,作者信息和本声明。否则将追究法律责任。
 */
namespace ZM\AdminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Filesystem\Filesystem;
class DefaultController extends Controller {
  public function indexAction($name) {
    return $this->render('ZMAdminBundle:Default:index.html.twig', array('name' => $name));
  }
  /**
   * 上传图片
   *
   * @param type $user_id 用户的id,用作文件名
   * @param type $str   表单中file类型的input的name
   * @param type $path  保存路径
   * @return type
   */
  public function uploadPic($user_id, $str, $path) {
    $fs = new Filesystem();
    //检查路径是否存在
    if (!$fs->exists($path)) {
      //如果不存在,创建目录
      $fs->mkdir($path, 0700);
    }
    //使用Upload库
    $storage = new \Upload\Storage\FileSystem($path);
    $file = new \Upload\File($str, $storage);
    //如果文件名为空
    if ($file->getName() != '') {
      //设置文件名为用户的id
      $file->setName($user_id);
      //验证文件上传
      $file->addValidations(array(
        //指定文件类型
        new \Upload\Validation\Mimetype(array('image/png', 'image/jpg', 'image/jpeg', 'image/gif')),
        //指定文件大小
        new \Upload\Validation\Size('2M')
      ));
      //上传文件
      try {
        //成功
        $file->upload();
        //文件名和扩展名
        $file_name = $file->getNameWithExtension();
      } catch (\Exception $e) {
        //失败!
        $errors = $file->getErrors();
      }
    }
    //返回文件名和扩展名
    return $file_name;
  }
}

意在本文所述对大家基于Symfony框架的PHP程序设计有着援救。

实施上边的吩咐,composer会给你的花色选取一个最佳本子的bundle,把它增加到composer.json中,并将bundle下载到vendor/目录下。尽管你想要下载一个点名的本子,在bundle的包名后扩张:版本号

2.用户上传头像,并将头像全路径存入数据库表

您可能感兴趣的篇章:

  • Symfony2使用Doctrine举办数据库查询艺术实例计算
  • Symfony2完结从数据库获取数据的方法小结
  • Symfony2成立页面实例详解
  • Symfony2之session与cookie用法小结
  • 澳门葡京备用网址,Symfony2框架学习笔记之表单用法详解
  • Symfony2框架创设项目与模板设置实例详解
  • Symfony2学习笔记之插件格式深入分析
  • Symfony2学习笔记之系统路由详解
  • Symfony2学习笔记之调节器用法详解
  • Symfony2学习笔记之模板用法详解
  • Symfony2安装第三方Bundles实例详解
  • Symfony2使用第三方库Upload制作图纸上传实例详解
  • Symfony2联合查询完毕情势

二、注册Bundle

<?php
/**
 * 联系人控制器
 * @author Sun
 * By blogs.zmit.cn http://blogs.zmit.cn
 * 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 http://blogs.zmit.cn/6544.html
 * 中梦博客,作者信息和本声明。否则将追究法律责任。
 */
namespace ZM\ApiBundle\Controller;
//引用写好的上传图片方法uploadPic的Controller,并命名为BaseController
use ZM\AdminBundle\Controller\DefaultController AS BaseController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
//继承BaseController
class ContactController extends BaseController {
  /**
   * 用户上传头像
   *
   * @return Response
   */
  public function uploadHeadAction() {
    $request = Request::createFromGlobals()->request;
    $user_id = $request->get('user_id');
    //判断是否有文件上传
    if (isset($_FILES['head']) && $_FILES['head'] != '') {
      $conn = $this->getDoctrine()->getConnection();
      $data = $conn->fetchAssoc("SELECT id, head FROM contact WHERE id = ? LIMIT 1", array($user_id));
      //判断用户是否存在
      if(!empty($data['id'])) {
        //设置图片保存路径
        $path = 'image/head/';
        //获取上传文件后返回的文件名和扩展名
        $file_name = $this->uploadPic($user_id, 'head', $path);
        //修改用户contact表head头像字段的值
        $conn->executeUpdate("UPDATE contact SET head = ? WHERE id = ?", array($path . $file_name, $user_id));
        $result['flag'] = 1;
        $result['content'] = '上传头像成功!';
      } else {
        $result['flag'] = 3;
        $result['content'] = '用户不存在!';
      }
    }else{
      $result['flag'] = 2;
      $result['content'] = '上传失败,没有选择图片!';
    }
    return new Response(json_encode($result), '200', array('Content-Type' => 'application/json'));
  }
}

明天,第三方的bundle已经设置到您的symfony项目中了,在vendor/目录下。此时大家供给在app/AppKernel.php里注册安装好的bundle

诸如此比图片就上传成功,将用户的id作为文件名,并修改表字段值为图片的全路线

例如DoctrineFixturesBundle:

澳门葡京备用网址 2

class AppKernel extends Kernel
{
  public function registerBundles()
  {
    $bundles = array(
      //...在这里注册
      new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
    );
  }
  //...
}

本文永世地址:
本文来源 IT985博客 ,转发时请注明出处及相应链接。

三、配置Bundle

越多关于PHP框架相关内容感兴趣的读者可查看本站专项论题:《php优异开拓框架计算》,《codeigniter入门教程》,《CI(CodeIgniter)框架晋级教程》,《Yii框架入门及常用技术总括》及《ThinkPHP入门教程》

有个别包须要部分万分的配备在
app/config/config.yml文件里。包的文书档案会告诉大家关于如何安顿,也能够透过指令来参谋包的布局

指望本文所述对我们基于Symfony框架的PHP程序设计有着帮衬。

$ app/console config:dump-reference

您大概感兴趣的篇章:

  • Symfony2使用Doctrine举办数据库查询艺术实例计算
  • Symfony2达成从数据库获取数据的议程小结
  • Symfony2创制页面实例详解
  • Symfony2之session与cookie用法小结
  • Symfony2框架学习笔记之表单用法详解
  • Symfony2框架创制项目与模板设置实例详解
  • Symfony2学习笔记之插件格式解析
  • Symfony2学习笔记之系统路由详解
  • Symfony2学习笔记之调控器用法详解
  • Symfony2学习笔记之模板用法详解
  • Symfony2开拓之调控器用法实例解析
  • Symfony2安装第三方Bundles实例详解
  • Symfony2联合查询达成格局

例如TwigBundle:

$ app/console config:dump-reference TwigBundle

会获得如下的唤起

# Default configuration for "TwigBundle"
twig:
  exception_controller: 'twig.controller.exception:showAction'
  # Deprecated since 2.6, to be removed in 3.0. Use twig.form_themes instead
  form:
    resources:
      # Default:
      - form_div_layout.html.twig
      # Example:
      - MyBundle::form.html.twig
  form_themes:
    # Default:
    - form_div_layout.html.twig

    # Example:
    - MyBundle::form.html.twig
  globals:
    # Examples:
    foo:         "@bar"
    pi:         3.14
    # Prototype
    key:
      id:          ~
      type:         ~
      value:        ~
  autoescape:
    # Defaults:
    - Symfony\Bundle\TwigBundle\TwigDefaultEscapingStrategy
    - guess
  autoescape_service:  null
  autoescape_service_method: null
  base_template_class: ~ # Example: Twig_Template
  cache:        '%kernel.cache_dir%/twig'
  charset:       '%kernel.charset%'
  debug:        '%kernel.debug%'
  strict_variables:   ~
  auto_reload:     ~
  optimizations:    ~
  paths:
    # Prototype
    paths:        ~

切切实实的第三方bundle安装方式,和该bundle的运用办法都得以在它的README文件里查看。

正文永恒地址:
本文来源 IT985博客 ,转载时请申明出处及相应链接。

更加多关于PHP框架相关内容感兴趣的读者可查阅本站专项论题:《php优良开荒框架总括》,《codeigniter入门教程》,《CI(CodeIgniter)框架进级教程》,《Yii框架入门及常用技艺总计》及《ThinkPHP入门教程》

希望本文所述对我们基于Symfony框架的PHP程序设计具备援助。

您只怕感兴趣的篇章:

  • Symfony查询情势实例小结
  • Symfony2联合查询完毕情势
  • Symfony2使用Doctrine进行数据库查询艺术实例总括
  • 高品质PHP框架Symfony2非凡入门教程
  • Symfony2完毕从数据库获取数据的不二法门小结
  • Symfony2学习笔记之模板用法详解
  • Symfony2框架学习笔记之表单用法详解
  • Symfony2框架创设项目与模板设置实例详解
  • symfony2.4的twig中date用法深入分析
  • Symfony2学习笔记之调控器用法详解
  • Symfony2实现在controller中获取url的方法
  • Symfony2针对输入时间张开询问的法子解析

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website