我有这个代码:
<tr>
<td width="40%" align="left" class="form_cell">
<span class="sub_header">Update or Delete</span><br />
Please select whether you would like us to update this contacts details, or delete them from the system.
</td>
<td width="60%" align="left" class="form_cell">
[class=form__parser func=updateDetails__updel(150.$update_or_delete$.true)]
</td>
</tr>
<tr>
<td width="100%" align="left" colspan="2" id="ammend_contact_details" style="display: none;">
<table border="0" cellspacing="0" cellpadding="0" width="100%" align="left">
<tr>
<td width="40%" align="left" class="form_cell">
<span class="sub_header">New Title</span><br />
Please enter the contacts new title, IE Mr, Mrs, Dr, Miss, Ms
</td>
<td width="60%" align="left" class="form_cell">
<input type="text" …Run Code Online (Sandbox Code Playgroud) 我最近一直在学习使用 Docker 构建图像和容器。使用 Mac 时我对它相当有信心,但最近切换到 Ubuntu,我对这方面的开发还很陌生。
我使用一个标准的新 Laravel 项目作为我的“代码”,目前我只使用一个 php 容器和 nginx 容器。
我正在使用一个docker-compose.yml文件来创建我的容器:
version: "3.1"
services:
nginx:
image: nginx:latest
volumes:
- ./code:/var/www
- ./nginx_conf.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
php:
image: php:7.3-fpm
ports:
- 9000
volumes:
- ./code:/var/www
Run Code Online (Sandbox Code Playgroud)
上面的代码可能有也可能没有错误,因为我只是输入了它而不是复制和粘贴 - 但它在我的机器上工作。
问题是:
php-fpm 配置了--with-fpm-user=www-dataand --with-fpm-group=www-data,并在php:7.3-fpmDockerfile (see here) 中设置。
我主机上的文件以我的用户名和组作为所有者/组保存。
但是,当我通过浏览器访问应用程序时,我在启动时收到权限被拒绝错误(当 Laravel 尝试在存储中创建错误日志文件时)。我认为这是因为php-fpm作为 www-data 运行,但存储目录具有drwxr-xr-x所有者/组 phil:phil - 我的主机所有者和组的权限。
经过数小时的谷歌搜索和试验,我尝试了以下方法:
递归地将宿主机上代码目录的所有者和组更改为www-data:www-data. 这允许 Laravel 应用程序工作,但我现在无法使用 …
这看起来应该是一个相当简单的问题,但是对于Laravels(5.1)模型工厂,我应该将每个模型定义放在一个ModelFactory.php文件中吗?
例如,如果我有200个不同的模型,我可以看到这个文件(Database\Factories\ModelFactory.php)变得非常庞大和杂乱.
我的问题是:
有没有更好的方法来组织模型工厂,还是我真的应该在那个文件中定义它们?什么是最佳做法?
我目前正在将一个项目从CodeIgniter迁移到Laravel5.
我在Laracasts中看到,您可以Request::authorize()在调用控制器之前使用该方法来授权访问,并返回true或false.
这将(我认为)是理想的解决方案,因为我可以在请求中包含权限检查,而不是通过权限检查和重定向/响应污染控制器.
唯一的问题是,当我false从authorize()它返回时,它只是加载一个带有forbidden书面的空白页,我在laravel.com上找不到关于如何模板的任何文档(要么没有文档,要么我忽略它)
我知道我可以编辑404页面errors/404.blade.php,但我无法弄清楚如何自定义403页面,我试图添加一个自定义403.blade.php页面,但不会显示.(https://mattstauffer.co/blog/laravel-5.0-custom-error-pages)
将这些权限检查放在请求中是个好主意吗?或者我错过了什么?
更新
我运行了一个回溯authorize(),看起来它抛出了一个UnauthorizedException延伸RuntimeException.我试过在routes.php文件中捕获这两个,这也不起作用.
我也试图创建中间件,并从一个方法调用中间件,这也不起作用,因为中间件甚至根本没有被调用.
更新2
好的,所以我发现我只能$this->middleware()从构造函数调用,而不是单个方法,这是进步,我猜.
我想我理解Laravel中命令的概念,因为它是放置可重用代码的好地方,可以从控制器等调用,但我有一个查询:
我可以从命令返回一个值回调用方法吗?例如,我有一个控制器方法,它在Active Directory中创建一个用户,为此有一个命令来执行此操作.如果AD服务器无法访问,我想将响应返回给调用控制器方法.这可能吗?
它只在文档中显示如何使用命令dispatch(),但没有关于它是否可以返回任何内容.
如果你不能返回一个值,有人可以解释为什么你不想返回一个值的原因吗?我知道排队的命令可能需要一段时间而不适合等待响应,但对于应立即执行的命令,我不明白为什么你不想返回一个值.
任何帮助或建议表示赞赏.
为什么我不能在表单中使用2个相同的输入字段,并且回车按钮提交表单
开门见山。我正在尝试使用enter按钮在输入元素聚焦时提交表单,然后应该发出一个事件。
如您所见,如果我有1个以上相同类型的输入(例如2个input="text"输入,当我enter专注于某个输入时按下按钮时,它将无法发出该submit事件。
在紧接其下的第二个应用示例中,我具有完全相同的形式,具有完全相同的vuejs实例化,但是只有一个输入字段,并且当您按Enter键关注该元素时,它将正确地发出Submit 事件。
我试图用谷歌搜索这里可能发生的事情,但是除了“防止在回车时提交表单”外,还很难找到其他用途。
我尝试将ID属性,name属性等添加到元素,但仍无法按预期工作。
我不是vuejs的初学者,也不是高级JS用户,因此,“简单”的答案将不胜感激:D
如果需要更多信息,请告知我们,我们将尽力提供
我对PHPExcel有一个非常混乱的问题.我有800名学生.我已经生成了一个电子表格,其中列出了学生所拥有的多少赞誉(当天每月).
例如,它可能如下所示:
+---------------+-----+-----+-----+-----+
| Student Name | 1st | 2nd | 3rd | 4th | ...
+---------------+-----+-----+-----+-----+
| Test Student | 2 | 0 | 3 | 7 |
+---------------+-----+-----+-----+-----+
Run Code Online (Sandbox Code Playgroud)
我想要更改大于(或等于)5的单元格的背景颜色.我使用循环来循环学生和几天.这是我的代码:
for($d=1; $d<=$daysInCMonth; $d++)
{
$phpExcel
->getSheetByName('Monthly Leaderboard')
->setCellValue($alphabetArray[($d+7)] . ($recordCount+5), $record['monthlyReport'][$MonthlyReportKeys[($d-1)]]);
if($record['monthlyReport'][$MonthlyReportKeys[($d-1)]]>=5)
{
$cellId = $alphabetArray[($d+7)] . ($recordCount+5);
$phpExcel
->getSheetByName('Monthly Leaderboard')
->getStyle($cellId)
->applyFromArray(
array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID,'color' => array('rgb' => '000000'))
));
}
}
Run Code Online (Sandbox Code Playgroud)
为了帮助理解代码,初始for循环从1 开始循环到当前月份的天数(6月的IE 30).然后,它将单元格值设置为每个给定日期的点数.
一切都很完美.现在,if条件将捕获值大于(或等于)5的单元格.
代码$alphabetArray[($d+7)] . ($recordCount+5)在迭代中获取当前单元ID.我知道这也很好,因为如果我将它回显到屏幕,第一个输出是T5 …
我了解如何通过在控制器方法中类型提示类名来验证请求。然而,对于 Ajax 请求,根据文档,我应该验证控制器中的数据,因为使用验证器类将重定向而不是发送响应。
我正在看的主要部分是:
如果传入请求是 AJAX 请求,则不会生成重定向。相反,带有 422 状态代码的 HTTP 响应将返回到浏览器,其中包含验证错误的 JSON 表示形式。
然而,我的控制器如下:
public function update(App\Permission $permission, Request $request)
{
$this->validate($request, [
'permission_description' => 'required|string'
]);
...
}
Run Code Online (Sandbox Code Playgroud)
而且我一辈子都无法让它用 JSON 进行响应。文档指出,如果失败,它会抛出Illuminate\Contracts\Validation\ValidationException异常,但我无法捕获它。
每当失败时,它总是重定向回编辑页面。显然我不想要这个,我想要 json 响应。
我刚刚尝试过“手动写出来”,整个方法确实有效,但是如果它不起作用,那么$v = Validator::make($request->all(), ...);使用这种方法有什么意义呢?$this->validate()
该$this->validate()方法是否不适用于 AJAX,而我每次都必须编写很长的代码?难道我做错了什么?!
以下是我尝试过的:
public function update(App\Permission $permission, UpdatePermissionRequest $request)
{
/** Redirects rather than returns JSON if the validation fails **/
}
----------------------------------
public function update(App\Permission $permission, Request $request)
{
$this->validate($request, [ …Run Code Online (Sandbox Code Playgroud) 我正在尝试导出服务器生成的一些数据,并将其导入Googles Column Chart.
我已经阅读了有关使用JSON从服务器导入的文档,但是,我没有使用饼图,他们没有提供有关它们如何生成JSON的大量信息,以及它们之间的格式差别很大和柱形图.
我的服务器当前正在返回以下代码:
[['Week', 'Present', 'Absent', 'Other'],
['Week 1', 2, 0, 0],
['Week 2', 0, 0, 0],
['Week 3', 0, 0, 0],
['Week 4', 0, 0, 0],
['Week 5', 0, 0, 0]
]
Run Code Online (Sandbox Code Playgroud)
现在,如果我将其直接导入图表:
google.visualization.arrayToDataTable(response);
Run Code Online (Sandbox Code Playgroud)
然后我收到错误消息'Not a array'.我猜这是真的,实际上是一个字符串.
然而,在谷歌搜索之后,似乎使用$.parseJSON会起作用.我已经在另一个Line graph google图表上使用了这个功能,但是无论什么时候我使用$.parseJSON(response),我得到的都是
Uncaught SyntaxError: Unexpected token '
Run Code Online (Sandbox Code Playgroud)
我不能为我的生活看到撇号的位置.我想要做的就是将我的服务器生成的代码导入图表.
任何帮助总是受到赞赏.
php ×6
laravel ×4
laravel-5 ×3
javascript ×2
charts ×1
docker ×1
html ×1
html-table ×1
jquery ×1
laravel-5.1 ×1
phpexcel ×1
vue.js ×1