我怎样才能在Laravel 4中自动加载Guzzle?
我尝试创建一个新的GuzzleHttp/Client时遇到以下错误:
Symfony \ Component \ Debug \ Exception \ FatalErrorException
Class 'GuzzleHttp\Client' not found
Run Code Online (Sandbox Code Playgroud)
我在composer.json自动加载部分中进行了以下设置:
autoload: {
"psr-0": {
"Guzzle\\": "src/"
}
}
Run Code Online (Sandbox Code Playgroud) 我对使用ViewModel相当新,我想知道,ViewModel是否可以将域模型的实例包含为属性,或者这些域模型的属性是否应该是ViewModel本身的属性?例如,如果我有一个班级Album.cs
public class Album
{
public int AlbumId { get; set; }
public string Title { get; set; }
public string Price { get; set; }
public virtual Genre Genre { get; set; }
public virtual Artist Artist { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您是否通常让ViewModel保存Album.cs
该类的实例,或者您是否让ViewModel具有每个Album.cs
类属性的属性.
public class AlbumViewModel
{
public Album Album { get; set; }
public IEnumerable<SelectListItem> Genres { get; set; }
public IEnumerable<SelectListItem> Artists { get; set; }
public int Rating { get; set; …
Run Code Online (Sandbox Code Playgroud) 所以我是第4版的Laravel框架新手,想知道创建和使用RESTful控制器的方法是什么.阅读文档,我对RESTful控制器和资源控制器之间的区别感到困惑.
根据文档定义RESTful控制器时,它建议执行以下操作routes.php
:
Route::controller('posts', 'PostController');
Run Code Online (Sandbox Code Playgroud)
在PostController
,我们通过在方法的名称前加上我们想要使用的HTTP谓词来定义类方法吗?例如:
class PostController extends \BaseController {
public function getIndex()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它还概述了在routes.php
文件中创建资源控制器的方法,如下所示:Route :: resource('posts','PostController');
在PostController.php
我们定义方法时,不使用HTTP动词作为前缀.
class PostController extends \BaseController {
public function index()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?我们何时使用一个而不是另一个,为什么?
此外,我们应该使用Route::controller('posts', 'PostController');
或Route::resource('posts', 'PostController');
将路由传递给控制器,还是应该手动定义每个路由,如下所示:
Route::get('/users', 'UserController@index');
Route::get('/users/create', 'UserController@create');
Route::post('/users', 'UserController@store');
Route::get('/users/{id}', 'UserController@show');
Route::get('/users{id}/edit', 'UserController@edit');
Route::put('/users', 'UserController@update');
Route::delete('/users', 'UserController@destroy');
Run Code Online (Sandbox Code Playgroud) 目的是什么,何时应该使用SurfaceController vs RenderMvcController?似乎我无法用SurfaceController做任何事情,我无法用RenderMvcController做.例如,我特别考虑处理表单提交.使用RenderMvcController,我可以:
public class HomeController : RenderMvcController
{
private IUmbracoMapper _umbracoMapper;
public HomeController()
{
_umbracoMapper = new UmbracoMapper();
}
[HttpGet]
public ActionResult Home()
{
HomeViewModel viewModel = new HomeViewModel();
_umbracoMapper.Map(CurrentPage, viewModel);
return CurrentTemplate(viewModel);
}
[HttpPost]
public ActionResult Home(HomeViewModel viewModel)
{
// Handle form submission
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎更符合MVC,特别是因为我可以使用像UmbracoMapper这样的包来将当前的Umbraco节点映射到视图模型并将其传递给我的View?为什么以及何时应该使用SurfaceController?
如果我如此倾向,我可以使用RenderMvcController劫持给定节点的每个路由,让我更好地控制我的applciation,更像是一个纯ASP.NET MVC应用程序.这是一件好事吗?
正如标题所说,我何时应该使用@Umbraco
,@CurrentPage
或者@Model
在Razor视图中从节点获取属性.
@Model.Content.GetPropertyValue()
返回强类型对象,而@CurrentPage
返回动态对象.但是,@Umbraco
我可以获得动态(@Umbraco.Content()
)或强类型对象(@Umbraco.TypedContent()
).
可以@Umbraco
帮手做的一切,@CurrentPage
并@Model
可以做什么?我什么时候应该使用哪个,为什么?
我试图使用以下代码列出目录中的所有文件(以及任何子目录中的文件):
var fs = require('fs')
var walk = function(directoryName) {
fs.readdir(directoryName, function(e, files) {
files.forEach(function(file) {
fs.stat(file, function(e, f) {
if (f.isDirectory()) {
walk(file)
} else {
console.log('- ' + file)
}
})
})
})
}
walk(__dirname)
Run Code Online (Sandbox Code Playgroud)
但是,当我的代码尝试walk(file)
在第8行调用时,我收到以下错误:
TypeError: Cannot call method 'isDirectory' of undefined
at program.js:7:15
at Object.oncomplete (fs.js:107:15)
Run Code Online (Sandbox Code Playgroud)
为什么f未定义?如果我有下面的目录结构,代码不应该识别aaa.txt
和bbb.txt
作为文件,my_dir
作为一个目录,它递归调用walk
并再次开始进程(具有zzz.txt
f的值)?
- aaa.txt
- bbb.txt
+ my_dir
- zzz.txt
Run Code Online (Sandbox Code Playgroud) 如果我使用RSpec,我可以测试是否正在调用方法:
expect(obj).to receive(:method)
Run Code Online (Sandbox Code Playgroud)
MiniTest中的等价物是什么?我有一个模型,Post
它有一个before_validation
运行方法的回调create_slug
.在我的测试中,test/models/post_test.rb
我想确保create_slug
在调用时调用该方法post.save
.
Minitest :: Spec文档说我可以使用一种方法must_send
来检查方法是否被调用.但是,当我尝试时,@post.must_send :create_slug
我收到以下错误:
NoMethodError: undefined method `must_send' for #<Post:0x007fe73c39c648>
Run Code Online (Sandbox Code Playgroud)
我在我的test_helper.rb
文件中包含Minitest :: Spec :
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'minitest/spec'
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
#
# Note: You'll currently still have to declare fixtures explicitly in integration tests
# -- they do not yet …
Run Code Online (Sandbox Code Playgroud) 我在理解以下代码未通过的原因时遇到了一些麻烦:
test.py
import mock
import unittest
from foo import Foo
class TestFoo(unittest.TestCase):
@mock.patch('foo.Bar')
def test_foo_add(self, Bar):
foo = Foo()
foo.add(2, 2)
Bar.add.assert_called_with(2, 2)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
foo.py
from bar import Bar
class Foo(object):
def add(self, x, y):
bar = Bar()
return bar.add(x, y)
Run Code Online (Sandbox Code Playgroud)
bar.py
class Bar(object):
def add(self, x, y):
print('b.Bar --> Adding {} + {}'.format(x, y))
return x + y
Run Code Online (Sandbox Code Playgroud)
在代码中,Foo.add
创建一个实例Bar
并返回Bar.add
调用时的结果.为什么测试assert_called_with
的Bar.add
失败?我相信我Bar
在正确的位置嘲笑(我在嘲笑,foo.Bar
因为这是它被查找的命名空间,而不是bar.Bar
). …
我将推出一个2GB的Linode VPS来托管几个Wordpress CMS站点和一个基于Yii框架的站点.我计划使用Apache虚拟主机将每个站点自己的webroot分配到用户的主目录,而不是将所有内容都保留在/ var/www中
是否可以限制分配给每个Apache虚拟主机的bandiwdth?我打算在这个盒子里使用Debian Squeeze或CentOS.并不是说我设想任何最大限度地从Linode分配的4TB带宽的站点,但这似乎是一种很好的做法.
我认为使用VPS是最好的选择,因为没有一个站点特别大,使用PaaS的成本对于一些简单的CMS站点和轻量级Yii应用程序来说似乎有点多.
另外 - 我知道这是主观的,有点违反规则 - 但是对于新手而言,与CentOS相比,Debian特别容易使用吗?Linode在他们的Wiki上有关于启动和运行CentOS服务器的广泛指南,但我确信在Debian的野外有同样好的指南?
在此先感谢任何建议:)
我想知道如何创建一个带有向下指向底部的箭头的div.我可以像这样实现这种效果:http://jsfiddle.net/hyH48/.
但是,我不确定如何确保箭头位于div的中心?在小提琴中,它定位使用:
left: 20px;
Run Code Online (Sandbox Code Playgroud)
但我可以动态设置它出现在中心吗?显然,当人们在不同的屏幕分辨率下查看页面时,我无法事先知道要放在这里的整数.
请帮忙?
laravel ×2
laravel-4 ×2
umbraco ×2
apache ×1
asp.net-mvc ×1
c# ×1
composer-php ×1
css ×1
css3 ×1
guzzle ×1
javascript ×1
minitest ×1
mocking ×1
mvvm ×1
node.js ×1
php ×1
python ×1
rest ×1
ruby ×1
tdd ×1
unit-testing ×1
virtualhost ×1
webserver ×1