#javascript #php #angular #laravel
#javascript #php #угловой #laravel
Вопрос:
я здесь новичок, надеюсь, вы могли бы помочь мне с моей проблемой, у меня возникли проблемы с сохранением включенного статуса моего углового переключателя пользовательского интерфейса… всякий раз, когда я обновляю страницу, она возвращается к отключенному. но когда я проверяю базу данных, я мог бы обновить значение и выбранное имя параметра для выбранного переключателя пользовательского интерфейса. я хочу сохранять включенный статус моего углового переключателя пользовательского интерфейса всякий раз, когда я его включал
вот мой javascript
(function () {
'use strict';
angular.module('mainApp')
.controller('AdminSettingsController', AdminSettingsController);
function AdminSettingsController(
$scope
,$location
,AdminSettingsService
,$routeParams
) {
$scope.updateSettings = updateSettings;
$scope.getList = getList;
$scope.companyId = $routeParams.companyId;
function updateSettings(key, newStatus) {
AdminSettingsService.saveSetting(newStatus, key, $scope.companyId).then(function (responseObj) {
let data = responseObj.data;
console.log(data.settings)
let success = data.success;
$scope.settings = data.settings;
return data.settings;
});
}
function getList(key){
AdminSettingsService.getSetting(key).then(function (response) {
let data = response.data;
console.log('hardyharhar');
let success = data.success
});
}
}
})();
вот мой html
<side-nav active-tab="'admin'"></side-nav>
<head-bar></head-bar>
<div class="br-mainpanel">
<div class="br-pageheader pd-y-15 pd-l-20">
<nav class="breadcrumb pd-0 mg-0 tx-12">
<a class="breadcrumb-item" href="#!/home">Dashboard</a>
<span class="breadcrumb-item active">Admin Settings</span>
</nav>
</div>
<div class="pd-x-5 pd-sm-x-30 pd-t-20 pd-sm-t-2">
<div class="d-flex align-items-center ">
<i class="icon ion-settings tx-54" style="margin-right: 1px;"></i>
<div class="mg-l-20">
<h4 class="tx-18 tx-gray-800 mg-b-5" style="size: 50px; font-weight: bold">Admin Settings</h4>
<span class="mg-b-0">Settings for company.</span>
</div>
<div id="ch5" class="ht-60 tr-y-1"></div>
</div>
</div>
<div class="br-pagebody">
<div class="br-section-wrapper">
<div class="br-pagebody pd-x-20 pd-sm-x-30">
<div class="card bd-0 shadow-base">
<div class="table-responsive">
<table class="table table-striped table-bordered mg-b-0">
<thead>
<th style="width: 10%" class="text-center">Action</th>
<th style="width: 40%" class="text-center">Settings</th>
<th style="width: 10%" class="text-center">Status</th>
</thead>
<tbody>
<tr class="text-center">
<td>
<switch ng-change="updateSettings('isReimbursementEnabled', reimbursementStatus)" id="state" name="state" ng-model="reimbursementStatus" class="blue"></switch>
</td>
<td class="text-left">
<h4>Reimbursement</h4>
<p>Allows processor to access reimbursement {{ reimbursementStatus }}.</p>
</td>
<td>
<h4> <span class= "{{ reimbursementStatus ? 'badge badge-pill badge-success' : 'badge badge-pill badge-secondary' }}">
{{ reimbursementStatus ? "Enabled" : "Disabled"}}
</span>
</h4>
</td>
</tr>
<tr class="text-center">
<td>
<switch ng-change="updateSettings('isReportsEnabled', reportsEnabled)" id="state" name="state" ng-model="reportsEnabled" class="blue"></switch>
</td>
<td class="text-left">
<h4 class="">Reports</h4>
<p>Allows processor to access reports.</p>
</td>
<td>
<h4> <span class="{{ reportsEnabled ? 'badge badge-pill badge-success' : 'badge badge-pill badge-secondary' }}" >
{{ reportsEnabled ? "Enabled" : "Disabled" }}
</span>
</h4>
</td>
</tr>
<tr class="text-center">
<td>
<switch ng-change="updateSettings('isAccountsEnabled', accountStatus)" id="state" name="state" ng-model="accountStatus" class="blue"></switch>
</td>
<td class="text-left">
<h4 class="">Accounts</h4>
<p>List of company accounts.</p>
</td>
<td>
<h4><span class="{{ accountStatus ? 'badge badge-pill badge-success' : 'badge badge-pill badge-secondary' }}" >
{{ accountStatus ? "Enabled" : "Disabled" }}
</span>
</h4>
</td>
</tr>
<tr class="text-center">
<td>
<switch ng-change="updateSettings('isReimbursementRequestLimitEnabled', requestStatus)" id="state" name="state" ng-model="requestStatus" class="blue"></switch>
</td>
<td class="text-left">
<h4 class="">Reimbursement Request Limit</h4>
<p>Sets the reimbursement request limit per year.</p>
</td>
<td>
<h4><span class="{{ requestStatus ? 'badge badge-pill badge-success' : 'badge badge-pill badge-secondary' }}">
{{ requestStatus ? "Enabled" : "Disabled" }}
</span>
</h4>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<foot-bar></foot-bar>
</div>
</div>
и вот мой контроллер api
namespace AppHttpControllersApi;
use AppCriteriaLimitOffsetCriteria;
use AppHttpControllersController;
use AppModelsAdminSettings;
use AppModelsAccountSettings;
use AppModelsAccount;
use AppRepositoriesAccountRepositoryEloquent;
use AppRepositoriesAdminSettingsRepositoryEloquent;
use IlluminateHttpRequest;
use IlluminateSupportFacadesDB;
use IlluminateSupportFacadesLog;
class AdminSettingApiController extends Controller
{
private $adminSettingsRepository;
private $accountRepository;
public function __construct(
AdminSettingsRepositoryEloquent $adminSettingsRepo
,AccountRepositoryEloquent $accountRepo
)
{
$this->adminSettingsRepository = $adminSettingsRepo;
$this->accountRepository = $accountRepo;
}
public function saveSetting(Request $request) {
$newStatus = $request->input('newStatus');
$key = $request->input('key');
$companyId = $request->input('companyId');
$result = array(
'success' => false
);
$keyExist = $this->adminSettingsRepository->findByField('setting_name', $key)->first();
log::debug('thisisKeyExist.......................'.json_encode($keyExist));
$newStatusData = [
'setting_name' => $key,
'status' => $newStatus,
'company_id' => $companyId
];
try {
DB::beginTransaction();
if (!$keyExist) {
$newStatus = AdminSettings::create($newStatusData);
}
else {
$updateQuery = AdminSettings::where('setting_name', '=', $key);
$updateQuery->update($newStatusData);
}
$result['success'] = true;
$result['settings'] = $newStatusData;
DB::commit();
} catch (Exception $e) {
Log::error($e);
$result['success'] = false;
$result['messages'] = ['Server has encountered an unexpected error.'];
}
return $result;
}
public function list(Request $request){
$key = $request->input('key');
$result = array(
'success' => false
);
$keySetting = $this->adminSettingsRepository->findByField('setting_name', $key)->first();
$keyList = [];
try {
DB::beginTransaction();
$keyList = $this->adminSettingsRepository::where('status', '=', 1, 'setting_name')->get();
Log::debug('thisIsPrimarykey...................'.json_encode($keyList));
$result['key'] = $key;
$result['success'] = true;
DB::commit();
}
catch (Exception $e){
Log::error($e);
$result['success'] = false;
}
}
}
надеюсь, вы могли бы мне помочь, большое спасибо! 🙂
Комментарии:
1. Я думаю, вы пытаетесь контролировать статус возмещения, верно? где вы на самом деле устанавливаете значение при загрузке / перезагрузке? в какой-то момент вам нужно предоставить repensementstatus значение из базы данных.
2. да, поскольку repensementstatus дает логическое значение, необходимое мне для управления переключателем, я не устанавливаю перезагрузку, просто мне нужно было оставить его включенным, когда я нажал на него enabled, и отключенным, когда мне нужно его отключить…
3. вы сохраняете его в базе данных, которую вы говорите, и вызываете базу данных при каждой загрузке, верно? Я просто не вижу, где вы указываете значение при загрузке страницы. вам нужно что-то добавить в ngoninit, чтобы присвоить значение из базы данных возмещению status
4. не могли бы вы привести мне пример, сэр? где редактировать и где создавать экземпляр?