我正在尝试上传一些照片并使用Laravel功能构建来处理这些照片.但我不能为我的生活弄清楚如何正确地做到这一点.我已经能够实际上传一些内容,但我遇到了一些问题.这是我现在的代码:
如果查看文档,并找到了这个函数:$file = Input::file('photo');我已经使用了这个函数,它的内容$file变成了一个实例Symfony\Component\HttpFoundation\File\UploadedFile,正如文档告诉我们的那样,"扩展PHP SplFileInfo类并提供了各种方法与文件交互." http://laravel.com/docs/4.2/requests#files
然后我使用了这个函数Input::file('photo')->move($destinationPath);,它应该只是服务器上所需文件夹中的文件.它确实如此.但现在出现了问题.现在所有上传的文件都有类似的文件名phpgoJnLc,没有扩展名.
我已经看过了可用的函数,SplFileInfo并试过getExtension给我一个空字符串,getFilename这也给了我类似的东西phpgoJnLc.
然后我在互联网上环顾四周,从Laravel 3中找到了一些代码,他们做了类似这样的事情:
$filename = Str::random(20) .'.'. File::extension(Input::file('photo.name'));
但结果是只给出了Str::random(20)后跟点的结果.同样,没有文件扩展名.
那么,我做错了什么?如何使用Laravel 4上传文件?
我正在探索jQuery Mobile,以开发带有ordertracking信息的仪表板的移动版本.计划的目的是使用包含所有订单的简单无序列表,人们可以点击他们想要了解的更多链接.因为这个列表可能变得非常大,所以很容易拥有一个过滤功能,使用jQuery Mobile很容易.
就像这样:
<ul data-role="listview" data-filter="true">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Item 4</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
data-filter="true" 负责显示搜索栏,它实际上非常好用.
但我唯一的问题是,当什么都没找到时,它什么都没显示,我希望有一些文字说"对不起,找不到订单".
有没有人知道这是否可以使用jQuery Mobile,还是必须从头开始编码?
我正在尝试Laravel 4,我已经创建了一个资源控制器.在"编辑"功能中,我正在构建一个表单,该表单应该发布到"更新"功能.
要创建表单打开标记,我使用Form::open()最近添加到Laravel 4 的函数.但是,当我只是做Form::open()表单的动作是当前的URL,我无法弄清楚如何更改动作.
我试过Form::open('clients/' . $client->id)但这给了我以下错误:
ErrorException:Catchable Fatal Error:传递给Illuminate\Html\FormBuilder :: open()的参数1必须是类型数组
所以我试过了Form::open('[clients/' . $client->id).这不会产生错误,但现在表单打开标记是:
<form method="POST" action="http://boekhouding.dev/clients/1/edit" accept-charset="UTF-8" clients/1="clients/1">
我也是这样尝试的:Form::open(['action' => 'clients/' . $client->id])但是当我这样做时,表单打开标签根本就没有动作.
那么,有没有人知道如何设置表单操作?使用命名路线将是完美的,但即使能够设置动作也会很好.
我正在尝试将单元测试包含在我正在构建的新Laravel应用程序中.现在我想测试我的OrderController.该控制器的索引方法如下所示:
public function index()
{
// We need the extra 'orders()' for the query scope
$orders = $this->order->orders()->paginate($this->perPage);
$this->layout->content = View::make('orders.index', compact('orders'));
}
Run Code Online (Sandbox Code Playgroud)
现在我的测试看起来像这样:
public function testIndex()
{
$this->call('GET', 'orders');
$this->assertResponseOk();
$this->assertViewHas('orders');
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行phpunit,测试确实运行,但我得到: 1) OrderControllerTest::testIndex
Failed asserting that an array has the key 'orders'.
我已经跟踪了使用Controller Layouts的问题$this->layout.如果我只是做return View::make()测试确实通过,如果我返回$this->layout...它也确实通过,但这会破坏实际的应用程序.
因此,我发现只有选项才能使用return View::make()并拥有@extends('master')该视图.但是我觉得如果你想测试它就不能在你的应用程序中使用Controller Layouts,这似乎很奇怪.
难道我做错了什么?
好的,所以我试图将我的一个软件包移到PHPSpec测试中,但很快我遇到了这个问题.这些包是一个购物车包,所以我想测试一下,当你向购物车添加两个商品时,购物车的数量为2,简单.不过,当然,在一个购物车,增加了两个相同的项目的时候,不会有在车一个新的条目,但原来的项目将得到的2"数量"所以,而不是当他们是,例如,不同的尺寸.因此,每个项目都由唯一的rowId标识,基于它的ID和选项.
这是生成rowId的代码(由add()方法使用):
protected function generateRowId(CartItem $item)
{
return md5($item->getId() . serialize($item->getOptions()));
}
Run Code Online (Sandbox Code Playgroud)
现在我写了这样的测试:
public function it_can_add_multiple_instances_of_a_cart_item(CartItem $cartItem1, CartItem $cartItem2)
{
$this->add($cartItem1);
$this->add($cartItem2);
$this->shouldHaveCount(2);
}
Run Code Online (Sandbox Code Playgroud)
但问题是,两个存根都返回null该getId()方法.所以我尝试设置willReturn()for该方法,所以我的测试成了这样:
public function it_can_add_multiple_instances_of_a_cart_item(CartItem $cartItem1, CartItem $cartItem2)
{
$cartItem1->getId()->willReturn(1);
$cartItem2->getId()->willReturn(2);
$this->add($cartItem1);
$this->add($cartItem2);
$this->shouldHaveCount(2);
}
Run Code Online (Sandbox Code Playgroud)
但现在我得到错误,告诉我意外的方法被称为getName().所以我必须对CartItem接口上调用的所有方法做同样的事情:
public function it_can_add_multiple_instances_of_a_cart_item(CartItem $cartItem1, CartItem $cartItem2)
{
$cartItem1->getId()->willReturn(1);
$cartItem1->getName()->willReturn(null);
$cartItem1->getPrice()->willReturn(null);
$cartItem1->getOptions()->willReturn([]);
$cartItem2->getId()->willReturn(2);
$cartItem2->getName()->willReturn(null);
$cartItem2->getPrice()->willReturn(null);
$cartItem2->getOptions()->willReturn([]);
$this->add($cartItem1);
$this->add($cartItem2);
$this->shouldHaveCount(2);
}
Run Code Online (Sandbox Code Playgroud)
现在这个工作,测试是绿色的.但感觉不对......我错过了什么或者这是对PHPSpec的限制吗?
我目前正在创建一个批处理脚本,它调用多个PHP脚本(使用CodeIgniter)从一个DB中提取数据,处理结果并将结果插入另一个DB.首先,我知道这可能不是这项工作的最佳工具,但它现在必须要做.但回到主题,脚本运行正常,性能非常好,除了一种方法.它从第一个DB中提取数据,并将其插入第二个DB.这是一个包含大约20列和35000行的表.
我正在使用一个简单的$this->db->insert_batch('tablename', $insertdata);函数来插入这些结果,但不知何故,脚本需要大约15分钟才能执行...
问题是,如何优化这个过程?
提前致谢
编辑
这是我用来在第二个数据库上创建表的查询,数据插入的数据库.
CREATE TABLE IF NOT EXISTS `invoices` (
`invoice_number` varchar(40) NOT NULL,
`shippinglist_number` varchar(40) DEFAULT NULL,
`shippinglist_line` varchar(255) DEFAULT NULL,
`customer_id` varchar(5) NOT NULL,
`deptor` varchar(5) NOT NULL,
`vat_number` int(255) DEFAULT NULL,
`invoice_date` date NOT NULL,
`expire_date` date NULL DEFAULT NULL,
`currency_code` varchar(10) NOT NULL,
`subtotal` decimal(19,4) NOT NULL,
`vat` decimal(19,4) NOT NULL,
`total` decimal(19,4) NOT NULL,
`qty` int(10) NOT NULL,
`partcode` varchar(255) NOT NULL,
`description` text,
`price` decimal(19,4) NOT NULL,
`pieces_per` …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个可以用3种不同语言查看的网站.我已将所有文本放入语言文件中,几乎所有内容都按预期工作.像分配配置这样的东西我已经放入配置文件并进入application/config,如下所示:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['num_links'] = 2;
$config['full_tag_open'] = '<p class="pagination">';
$config['full_tag_close'] = '</p>';
$config['first_link'] = '« ' . lang('first');
$config['last_link'] = lang('last') . ' »';
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但我已经尝试了相同的表单验证配置文件,如下所示:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config = array(
'login' => array(
array(
'field' => 'login_email',
'label' => lang('emailaddress'),
'rules' => 'trim|required|valid_email|min_length[6]'
),
array(
'field' => 'login_password',
'label' => lang('password'),
'rules' => 'trim|required'
),
),
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.看起来这个配置文件在语言文件/库之前加载.说实话,目前我并不知道如何解决这个问题,除了再次从配置文件中取出所有内容,并将其放入控制器,但我宁愿不这样做.
任何想法如何解决这一问题?
php ×5
laravel ×3
laravel-4 ×3
codeigniter ×2
action ×1
batch-file ×1
controller ×1
file-upload ×1
forms ×1
insert ×1
jquery ×1
mobile ×1
mocking ×1
multilingual ×1
mysql ×1
phpspec ×1
search ×1
stubs ×1
testing ×1
unit-testing ×1
validation ×1