虽然我找到了很多与此问题相关的资源,但它们都没有使用Zend Framework正确地给出多语言CMS的答案.
zend framwork中有许多z end translate适配器.但是最需要数据库(mysql)驱动的网站的那个(zend sql adapter)还没有发布.
对于那些不是数据库驱动的多语言网站,内容可以放在文件(xml,mo或任何其他)中,其中一个zend翻译适配器用于处理内容以显示正确的语言.
我们将如何处理数据库驱动的多语言网站?以前我们习惯使用php设计精良的多语言数据库,将每篇文章(页面)保存在表格中,并包含所有必需的翻译.如果我们通过使用zend框架来做同样的事情,那会是过度杀戮还是慢速网站?我们仍然使用zend缓存来加快速度,但我们无法利用zend translate.稍后,当用于sql的zend翻译适配器可用时,通过使用zend translate可以很容易地切换多语言内容管理系统.
有没人试过这个?什么可能是职业选手和玉米?
另一个解决方案是保持我们良好的设计多语言数据库,并在管理区域中使用GUI在每个更改管理员生成基于xml的语言文件.然后使用zend translate adapter之一来处理这些xml文件.我想这可能是矫枉过正的,用大炮杀死一只鸟:)
当我谈论将整个页面的内容放在数据库中时.它可以包含一些html标签,如b,span,br,p等.zend翻译如何处理内容与html标签?
如果某人之前已经实现了这一点,那么使用zend框架处理多语言内容管理网站的最佳方式可能是什么.
任何专家意见!
php mysql multilingual zend-framework content-management-system
如何使用phpmyadmin查看mysql数据库中用户定义函数的列表.
Mysql数据库已从一台服务器迁移到另一台服务器,用户定义的自定义功能无法正常工作.我需要查看用户定义函数列表,以检查它们是否存在于数据库中.
Fatal error: db::execute() Could not execute: FUNCTION database.xxx does not exist (SQL: SELECT Function(field) FROM users in file.php on line xx
Run Code Online (Sandbox Code Playgroud) 我试图在插件类中获取服务定位器/实体管理器,我该怎么做到.
在我的控制器中,我得到这样的.
public function getEntityManager()
{
if(null === $this->em){
$this->em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
}
return $this->em;
}
public function setEntityManager(EntityManager $em)
{
$this->em = $em;
}
Run Code Online (Sandbox Code Playgroud)
但是在插件类中,我在$ this-> getServiceLocator()行上遇到错误.因为这在插件类中不可用.
我怎样才能这样做,以便我可以获取一些记录并在插件中插入少量数据库.
我的插件类中有MvcEvent $ e对象,我可以利用它来获取实体管理器吗?
我用这个插件来创建我的插件
任何指南都会受到关注.
更新:
namespace Auth\Controller\Plugin;
use Zend\Mvc\Controller\Plugin\AbstractPlugin;
use Zend\EventManager\EventInterface as Event;
use Zend\Authentication\AuthenticationService;
use Doctrine\ORM\EntityManager;
use Auth\Entity\User;
use Zend\Mvc\MvcEvent;
class AclPlugin extends AbstractPlugin
{
/*
* @var Doctrine\ORM\EntityManager
*/
protected $em;
public function checkAcl($e)
{
$auth = new AuthenticationService();
if ($auth->hasIdentity()) {
$storage = $auth->getStorage()->read();
if …Run Code Online (Sandbox Code Playgroud) 我们可以使用控制器访问实体管理器 $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
但是我们怎样才能在Zendframework 2中的项目的其余部分访问实体管理器单例实例.
在Zendframework 1中,我们使用init()方法初始化控制器中的东西.我看到这是从zenframework 2中取出的.为什么?什么是在zf 2中实现相同功能的最佳方法.我正在升级我在zf1中开发的先前项目,我可以看到zf2中的事情与zf1相比发生了很大变化.
是否有任何其它的ZF2变化,他们的方式,我们使用其他方法,如preDispatch()和postDispatch()在ZF1?
有谁经历过这个?
在zf1中,我们可以使用获取控制器和动作名称
$controller = $this->getRequest()->getControllerName();
$action = $this->getRequest()->getActionName();
Run Code Online (Sandbox Code Playgroud)
我们如何在zf2中实现这一目标?
更新:我试图让他们使用
echo $this->getEvent()->getRouteMatch()->getParam('action', 'NA');
echo $this->getEvent()->getRouteMatch()->getParam('controller', 'NA');
Run Code Online (Sandbox Code Playgroud)
但我收到了错误
Fatal error: Call to a member function getParam() on a non-object
Run Code Online (Sandbox Code Playgroud)
我喜欢在__construct()方法中获取它们;
理想情况下,我想检查是否没有定义Action将执行noaction()方法.我会检查使用php方法method_exists.
在ZF1中,我们在layout.phtml文件中使用partial
$this->partial('header.phtml', array('vr' => 'zf2'));
Run Code Online (Sandbox Code Playgroud)
我们如何在ZF2中做同样的事情?
要创建一个文本输入框,我在zend framework2中使用了folling代码
use Zend\Form\Form;
class Loginform extends Form
{
public function __construct()
{
$this->add(array(
'name' => 'usernames',
'attributes' => array(
'id' => 'usernames',
'type' => 'text',
),
'options' => array(
'label' => 'User Name',
),
));
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用控件操作填充值
$form = new Loginform();
$form->get('usernames')->setAttribute('value', 'user 1');
Run Code Online (Sandbox Code Playgroud)
知道如何在zf2中的选择/下拉框中执行相同的操作?
参考:zend框架2文档
我一直在Entity类中构建我的所有验证,就像这样......
class User
{
protected $inputFilter;
public function getInputFilter()
{
if (!$this->inputFilter) {
$inputFilter = new InputFilter();
$factory = new InputFactory();
$inputFilter->add($factory->createInput(array(
'name' => 'username',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' =>'NotEmpty',
'options' => array(
'messages' => array(
\Zend\Validator\NotEmpty::IS_EMPTY => 'User name can not be empty.'
),
),
),
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 4,
'max' => 20,
'messages' => array( …Run Code Online (Sandbox Code Playgroud) 我需要在按钮的 style 属性中有一个条件。这是我的代码此时的样子。
<Button variant="outlined" component="span" className={classes.button}>
Choose file
</Button>
Run Code Online (Sandbox Code Playgroud)
我需要有这样的条件。
<Button variant="outlined" component="span" className={classes.button}
style={{display: ((this.props.filename === true)? 'none' : 'block') }}
>
Choose file
</Button>
Run Code Online (Sandbox Code Playgroud)
知道我怎样才能做到这一点吗?
php ×5
mysql ×2
function ×1
material-ui ×1
multilingual ×1
partials ×1
reactjs ×1
view-helpers ×1