在Larvel 4中,我正在尝试设置嵌套资源控制器.
在routes.php中:
Route::resource('admin/photo', 'Controllers\\Admin\\PhotoController');
Run Code Online (Sandbox Code Playgroud)
在app\controllers\Admin\PhotoController.php中:
<?php namespace Controllers\Admin;
use Illuminate\Routing\Controllers\Controller;
class PhotoController extends Controller {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
return 'index';
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
// …Run Code Online (Sandbox Code Playgroud) 我在Entity Framework 4.1和MySql Connector/Net 6.4.3中遇到了规范函数的问题.根据Microsoft的说法,所有数据库提供者都可以从LINQ生成的SQL中理解并将其转换为本地SQL方言; http://msdn.microsoft.com/en-us/library/bb738626.aspx但是,我的代码在CurrentUtcDateTime()上窒息,这里列出了; http://msdn.microsoft.com/en-us/library/bb738563.aspx
以下是生成攻击性SQL的LINQ查询(来自NopCommerce):
public List<Poll> GetPolls(int languageId, int pollCount, bool loadShownOnHomePageOnly)
{
bool showHidden = NopContext.Current.IsAdmin;
var query = (IQueryable<Poll>)_context.Polls;
if (!showHidden)
{
query = query.Where(p => p.Published);
query = query.Where(p => !p.StartDate.HasValue || p.StartDate <= DateTime.UtcNow);
query = query.Where(p => !p.EndDate.HasValue || p.EndDate >= DateTime.UtcNow);
}
if (loadShownOnHomePageOnly)
{
query = query.Where(p => p.ShowOnHomePage);
}
if (languageId > 0)
{
query = query.Where(p => p.LanguageId == languageId);
}
query = query.OrderBy(p => p.DisplayOrder); …Run Code Online (Sandbox Code Playgroud) 我从nuget.org上的ASP.NET Web API版本(周五RC之前的版本)升级到myget.org上的每晚版本.正如预期的那样,有许多重大变化,其中一个我似乎无法解决:我们有一个场景,我们希望我们的操作返回一个对象并将状态代码设置为201 Created.这之前很容易完成(可能无法编译 - 概念代码来自我的头脑):
Session session = GetSessionInfo(requestMessage);
var response = new HttpResonseMessage(HttpStatusCode.Created);
response.Content = response.CreateContent(session);
return response;
Run Code Online (Sandbox Code Playgroud)
CreateContent实际上是一个位于System.Net.Http.HttpResponseMessageExtensions中的扩展方法,在ObjectContent中调用内部构造函数.随着新版本的发布,HttpResponseMessageExtensions似乎在新版本中消失了,ObjectContent的内部构造函数也是如此.现在看来我必须调用一个ObjectContent构造函数,以下似乎最适合我们的需求:
public class ObjectContent<T> : ObjectContent
{
public ObjectContent(T value, MediaTypeFormatter formatter)
{
}
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎我必须将MediaTypeFormatter传递给它,将内容协商混合到动作的逻辑中.在我们的设置中,内容协商是通用的,并且与控制器完全分离.
有没有人建议解决方案返回一个对象,设置响应状态代码,但不必处理MediaTypeFormatter,媒体类型或任何其他内容协商相关的东西?
我想知道它是否可行,或者如何在我的Web API调用中将我的类上的字段用作参数?一旦我收到消息,我显然可以手动执行此操作,但我希望管道中内置了一些东西(比如MVC与jQuery结合使用必需的字段注释来自动回到UI显示必需的字段表示法)所以我不必手动检查所有内容.
假设我有以下ViewModel类:
public class PersonViewModel
{
public string FirstName {get; set;}
public string MiddleName {get; set;}
public string LastName {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
这是我简单的Post方法 PersonController
public HttpResponseMessage Post(PersonViewModel person)
{
}
Run Code Online (Sandbox Code Playgroud)
让我们说这些FirstName和LastName字段是必需的但不是 MiddleName.我想知道的是,如果Person对象没有填充必填字段之一,调用会自动使用HTTP 400错误请求或类似情况回复客户端吗?
基本上我必须手动完成所有这些工作,或者有没有办法让框架自动处理标记字段,所以我没有很多必需字段的样板验证代码?
手动方式我试图避免:
if (ModelState.IsValid)
{
if (person.LastName == string.empty)
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏,谢谢!
我不确定如何使用Laravel 4中的Eloquent Model增加列中的值?这就是我目前所拥有的,我不确定这是多么正确.
$visitor = Visitor::where('token','=','sometoken')->first();
if(isset($visitor)){
$visitor->increment('totalvisits');
}else{
Visitor::create(array(
'token'=>'sometoken',
'totalvisits'=>0
));
}
Run Code Online (Sandbox Code Playgroud)
使用Query Builder,我们可以使用它
DB::table('visitors')->increment('totalvisits');
Run Code Online (Sandbox Code Playgroud) 我需要在服务器端进行中到强加密,所以我想我会在PHP中使用mcrypt.如果我使用下面的函数,原始字符串的开头会在解密后变成二进制垃圾.(这不是额外添加垃圾的常见问题,而是我的字符串被更改.)根据文档,mcrypt_encrypt()应该填充足够的字符以匹配所选算法的块大小,但我怀疑它不起作用.
但是,如果我手动将其填充到Rijndael的128位(16字节)的块大小,它也不起作用.我可以使这个工作的唯一方法是通过预先填充一些足够长的字符串(可能)覆盖带状块,并在该字符串和我的数据之间添加一个已知的前缀,如"DATA#".解密后,该块已被部分损坏,但我的前缀和之后的所有数据都已正确解密.
$GLOBALS['encryptionmarker'] = 'DATA#';
function encrypt($plain, $key) {
/*
// workaround because beginning of decrypted string is being mangled
// so we simply prefix with some text plus marker
$prefix = str_pad('', 128, '#', STR_PAD_RIGHT).$GLOBALS['encryptionmarker'];
$plain = $prefix.$plain;
*/
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $plain, MCRYPT_MODE_CFB,
mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CFB),
MCRYPT_DEV_URANDOM));
return $encrypted;
}
function decrypt($encrypted, $key) {
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CFB,
mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CFB),
MCRYPT_DEV_URANDOM));
/*
// workaround: remove garbage
$pos = strpos($decrypted, $GLOBALS['encryptionmarker']);
$decrypted = …Run Code Online (Sandbox Code Playgroud) 我在SL/WPF中经历了一些MVVM示例,这里最基本的是实现ICommand接口.我已经理解了MVVM的工作原理.但是,我Execute对ICommand接口方法有疑问.
实现的类ICommand具有Execute如下所示的方法.
public void Execute(object parameter) //Method to call when the command is invoked
{
// pointer to a method to be executed
}
Run Code Online (Sandbox Code Playgroud)
在每个例子中,我都看到上面方法中的参数是NULL.为什么?有人可以发布一个MVVM的简单示例,其中使用此对象参数而不是null吗?
laravel ×2
laravel-4 ×2
c# ×1
cryptography ×1
eloquent ×1
encryption ×1
mcrypt ×1
mvvm ×1
mysql ×1
php ×1
silverlight ×1
wpf ×1