我以前创建了几个ASP.NET MVC应用程序,但我以前从未使用过WebAPI.我想知道如何创建一个简单的MVC 4应用程序,通过WebAPI而不是通过普通的MVC控制器来完成简单的CRUD.诀窍是WebAPI应该是一个单独的解决方案(事实上,很可能是在不同的服务器/域上).
我怎么做?我错过了什么?是否只是设置路由指向WebAPI的服务器?我发现的所有示例都展示了如何使用MVC应用程序来使用WebAPI似乎假设WebAPI已经"融入"MVC应用程序,或者至少在同一台服务器上.
哦,澄清一下,我不是在谈论使用jQuery的Ajax调用......我的意思是MVC应用程序的控制器应该使用WebAPI来获取/放置数据.
这似乎是重复的,因为那里有相同的问题.
不幸的是,所有这些问题的所有答案都缺少一个细节:各州.
我在哪里可以获得国家,州和城市的列表?
例如,我想要这个:
| Sydney | New South Wales | Australia |
Run Code Online (Sandbox Code Playgroud)
要么
| Miami | Florida | United States |
Run Code Online (Sandbox Code Playgroud)
我不想要这样的东西,它排除了国家:
| Miami | United States |
Run Code Online (Sandbox Code Playgroud)
有什么地方可以获得这种数据吗?
我已经尝试过以下数据源:
但所有这些都排除了各州.
我正在从外部服务器加载HTML.HTML标记具有UTF-8编码,并包含诸如ľ,š,č,ť,ž等字符.当我使用file_get_contents()加载HTML时,如下所示:
$html = file_get_contents('http://example.com/foreign.html');
Run Code Online (Sandbox Code Playgroud)
它弄乱了UTF-8字符并加载Å,¾,¤和类似的废话而不是正确的UTF-8字符.
我怎么解决这个问题?
更新:
我尝试将HTML保存到文件并使用UTF-8编码输出.两者都不起作用,这意味着file_get_contents()已经返回损坏的HTML.
UPDATE2:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sk" lang="sk">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="sk" />
<title>Test</title>
</head>
<body>
<?php
$html = file_get_contents('http://example.com');
echo htmlentities($html);
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我下载了symfony2,我可以从app_dev.php开始运行它.
但是当我从app.php开始时,我得到一个错误页面404.
app.php虽然当然在那里但它会被执行.
错误发生在app.php的最后一行代码之后的某处:
$kernel->handle(Request::createFromGlobals())->send();
Run Code Online (Sandbox Code Playgroud)
我想我必须配置一个开关.
编辑:
正如GeLo所建议的,我将生产版本的路由添加到app/config/routing.yml.
_welcome:
resource: "@AcmeDemoBundle/Resources/config/routing.yml"
prefix: /
Run Code Online (Sandbox Code Playgroud)
我用内容创建了src/Acme/DemoBundle/Resources/config/routing.yml:
bla:
pattern: /
defaults: {_controller:AcmeDemoBundle:Demo:index}
Run Code Online (Sandbox Code Playgroud)
在DemoController::indexAction()我置于die(__FILE__);
没有; 我仍然从app.php获得404!
编辑答案:
./app/console --env=prod cache:clear
Run Code Online (Sandbox Code Playgroud)
做了伎俩.介意env参数.
我正在尝试使用imagemagick转换图像,但我收到此错误:
转换:此图像格式没有解码委托`//i.imgur.com/nTheJ.jpg'@ error/construct.c/ReadImage/532.
我这样做:
convert http://i.imgur.com/nTheJ.jpg -resize 600×600 filarkiv/billeder/produkter/s236-085145.jpg
Run Code Online (Sandbox Code Playgroud)
我有以下代表:
DELEGATES freetype jpeg jng mpeg png x11 xml zlib
谁知道问题是什么?
我想使用Google的新测量协议从我的服务器而不是JavaScript发送跟踪事件.
此页面显示客户端ID是必需的:https: //developers.google.com/analytics/devguides/collection/protocol/v1/devguide#required
此页面说明它是可选的:https: //developers.google.com/analytics/devguides/collection/protocol/v1/parameters#visitor
另外,这些文档中定义的格式不同 - 第一页给出一个整数作为示例,只是说它是"一个唯一值",而第二个链接表示它应该是一个UUID.
如果我在后端发送用户ID或生成的UUID,Google会如何知道将该访问者链接到现有的访问者会话?好像我需要检索GA对现有用户的内部引用.
任何帮助表示赞赏 - 谢谢!
从umpteens时代起,我就阻止了Symfony 2和表格的问题.
我有一种形式的网站实体."网站"是网站实体的集合,每个网站包含两个属性:"类型"和"网址".
如果我想在我的数据库中添加更多的网站,我可以点击"添加其他网站"链接,这会在我的表单中添加另一个网站行.因此,当您单击提交按钮时,您可以同时添加一个或X个网站.
这个添加行的过程使用data-prototype属性,它可以生成网站子表单.
问题是我自定义我的表单以获得一个很棒的图形渲染......就像这样:
<div class="informations_widget">{{ form_widget(website.type.code) }}</div>
<div class="informations_error">{{ form_errors(website.type) }}</div>
<div class="informations_widget">{{ form_widget(website.url) }}</div>
<div class="informations_error">{{ form_errors(website.url) }}</div>
Run Code Online (Sandbox Code Playgroud)
但是数据原型不关心这种自定义,使用HTML和CSS标签和属性.我保留了Symfony渲染:
<div>
<label class=" required">$$name$$</label>
<div id="jobcast_profilebundle_websitestype_websites_$$name$$">
<div>
<label class=" required">Type</label>
<div id="jobcast_profilebundle_websitestype_websites_$$name$$_type">
<div>
<label for="jobcast_profilebundle_websitestype_websites_$$name$$_type_code" class=" required">label</label>
<select id="jobcast_profilebundle_websitestype_websites_$$name$$_type_code" name="jobcast_profilebundle_websitestype[websites][$$name$$][type][code]" required="required">
<option value="WEB-OTHER">Autre</option>
<option value="WEB-RSS">Flux RSS</option>
...
</select>
</div>
</div>
</div>
<div>
<label for="jobcast_profilebundle_websitestype_websites_$$name$$_url" class=" required">Adresse</label>
<input type="url" id="jobcast_profilebundle_websitestype_websites_$$name$$_url" name="jobcast_profilebundle_websitestype[websites][$$name$$][url]" required="required" value="" />
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
有没有人有想法制作那个黑客?
以下是一个来自Symfony2网站的关于定义自定义服务(YAML表示法)的示例:
services:
newsletter_manager:
class: %newsletter_manager.class%
arguments: [@mailer, @templating]
Run Code Online (Sandbox Code Playgroud)
是否有一个默认的Symfony2服务对象的名单可以注入定制服务的参数(如@mailer,@templating,@doctrine)?
我知道它们来自Container(例如,每个Controller班级都有).我试图转储所有服务,但我正在寻找更详细的列表:
php app/console container:debug
logger container Symfony\Bridge\Monolog\Logger
mailer container Swift_Mailer
translator n/a alias for translator.default
...
Run Code Online (Sandbox Code Playgroud) 我正在尝试在用户点击下载链接时下载文件.
在控制器中:
$response = new Response();
$response->headers->set('Content-type', 'application/octect-stream');
$response->headers->set('Content-Disposition', sprintf('attachment; filename="%s"', $filename));
$response->headers->set('Content-Length', filesize($filename));
return $response;
Run Code Online (Sandbox Code Playgroud)
这是打开保存文件的对话框,但它说文件是0字节.并将其更改为:
$response = new Response();
$response->headers->set('Content-type', 'application/octect-stream');
$response->headers->set('Content-Disposition', sprintf('attachment; filename="%s"', $filename));
$response->headers->set('Content-Length', filesize($filename));
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->setContent(readfile($filename));
return $response;
Run Code Online (Sandbox Code Playgroud)
我得到了一堆奇怪的字符而不是文件下载对话框.
最后,将"setContent"行切换为:
$response->setContent(file_get_contents($filename));
Run Code Online (Sandbox Code Playgroud)
它返回一个PHP错误:
致命错误:允许的内存大小......
关于如何实现这一点的任何线索?我之前在PHP中做过(没有MVC),但我不知道通过Symfony2做什么可能会遗漏...
也许解决方案是在PHP.INI中设置memory_limit,但我想这不是最好的做法......
我正在尝试找到一个可以检测我的照片中的脸部的应用程序,使检测到的脸部居中并裁剪720 x 720像素的照片.编辑我计划做的数百张图片是非常耗时和细致的.
我尝试过使用这里提到的python opencv做这个,但我认为它已经过时了.我也试过使用它,但它也在我的系统中给了我一个错误.还尝试使用GIMP的面部检测插件,但它是为GIMP 2.6设计的,但我定期使用2.8.我也尝试过在ultrahigh博客上发布的内容,但它已经过时了(因为我使用的是Ubuntu的精确衍生版本,而博客帖子在它仍然是Hardy的时候又回来了).也尝试使用Phatch,但没有面部检测,所以一些裁剪的图片的脸被切断.
我已经尝试了以上所有这些并且浪费了半天时间试图让上述任何一项做我需要做的事情.
你们有没有建议实现我拥有的大约800张照片的目标.
我的操作系统是Linux Mint 13 MATE.
注意:我打算再添加2个链接但是stackexchange阻止我发布两个更多的链接,因为我还没有太多的声誉.